! operador en JavaScript

Ahora estoy confundido acerca de! Operador en JavaScript. Mi entendimiento fue! El operador opera solo en booleano. Pero un comentario a uno de misrespuestas dice que puede funcionar en cualquier cosa y devuelve un booleano, que resultó ser cierto después de que hice algunas pruebas.

alert(!undefined); //true
alert(!function(){}); //false
alert(!{}); //false
alert(!null); //true
alert(!()); //crash
alert(!"false"); //false
alert(!false)​;​​​​​​​​​​​​ //true​​​​​​​​​​​​​​​​​​

¿Puede alguien ayudarme a generalizar el comportamiento de! operador.

EDITAR

Incluso cosas más confusas:

​alert( new String() == ""); //true
alert(!""); //true
alert(! new String()); //false

¿Cómo? Al aire libre

Respuestas a la pregunta(5)

Su respuesta a la pregunta