undefined roughly means "this value doesn't exist". Here are a few common places where you'll see it:
- A variable that isn't assigned a value
- The default return value of a function
- When accessing an unknown key of an object
null is used for object non-existence. It roughly means, "there is no object here".
Conceptually, it's similar to the empty string for strings, or 0 for numbers.
undefinedis often used for this same purpose.