If you'd like to know how to use lerp, Yann's explanation about lerp is probably the easiest to understand:
Lerp is a very simple function
Lerp stands for Linear intERPolation
This function need 3 numbers parameter
lerp(a,b,t)
a and b are whatever number you want
but t goes from 0 to 1 (well it can go under and over but... let's keep things simple)
lerp(a,b,0) returns a
learp(a,b,1) returns b
the values in between 0 and 1 returns a number X between a and b such as X-a = (b-a)*t
so t describe more or less where you are in between a and b
lerp(a,b,0.5) return the middle so a+(b-a)/2
lerp(0,10,0) = 0
lerp(0,10,1) = 10
lerp(0,10,0.5) = 5
the way newt use it with
sprite set X to lerp(self.X,destination,0.5*dt)
is a little trick
the .X you have in the lerp is the .X you change in the expression
and 0.5*dt is always more or less the same (depending on fps)
so from step to step in the movement, destination-self.X will be shorter and shorter, so the lerp(self.X,destination,0.5*dt) will continue to move the sprite but slower and slower (ease out)
In short the only issue with this technique is that the sprite will takes time to exactly get to destination. Mathematically it should never arrive but thanks to float rounding stuff it will.
Anyway you should not rely too much on
if sprite.X = destination
that's all :D