JavaScript: Diferencia entre null y undefined

Null y Undefined pertenecen a los tipos primitivos de JavaScript son muy parecidos e incluso cuando inicias en el mundo de js, no te queda claro que diferencia hay entre ambos.