Realmente no tiene mucho misterio, muestra en la consola todas las variables. Quizás lo que te confunde es la línea 13: hasOwnProperty verifica que una propiedad es propia del objeto, y no viene desde el prototipo. Es decir,
   
Código Javascript
:
Ver original- var obj = { 'prop' : 'valor' }; 
- obj.hasOwnProperty('prop'); // true 
- obj.hasOwnProperty('valueOf'); // false 
Porque valueOf es parte del prototipo de Object.
El operador && es el operador lógico AND. Supongo que lo habrás visto dentro de condicionales: 
 Cita:  if(cond1 && cond2 && cond3 ...)
    Sin embargo, también se puede usar para evitar el propio if: 
Código:
 if(cond){ alert('algo'); }
// se puede abreviar
cond && alert('algo');
  Debido al shortcircuit. Esto es, cuando usamos el operador &&, nada más se encuentre un valor false (o falsy), se devolverá ese valor (igual que si se usa || parará al encontrar cualquier valor que se pueda dar por true).
Entonces, si cond es verdadero, continuará para ver si el próximo valor es falso, y se ejecutará el alert, pero si es falso se devolverá false y se detendrá la ejecución. 
Espero haberme explicado bien 

Saludos (: