First-class functions have no regular restrictions on use, can be treated just like variables, and can be found anywhere in the code.
Higher-order functions either take other functions as arguments or return other functions as results, or both.