Higher Order Functions and WHY They're Really Useful in JavaScript