The lambda calculus doesn't really have assignment, so you can't call a function recursively in the way we're used to in modern programming languages. However, Y allows us to give a recursive function a temporary name which we can then use to apply it recursively. It's trippy, for sure, but pretty much theoretical use only for most people.
Have a look at this little paper by Richard Gabriel http://www.dreamsongs.com/NewFiles/WhyOfY.pdf
Recursion without requiring some kind of name primitive.
JavaScript:
function Y(le) { return (function (f) { return f(f); } (function (f) { return le(function (x) { return f(f)(x); }); })); }
Trippy recursive function, but I don't think I quite understand what you would use it for. ;)