Uso de operadores lógicos en javascript
Los operadores lógicos facultan valorar una serie de operandos utilizando operaciones AND y OR.

Operadores lógicos AND y OR

var foo = 1
var cantina = 0
var baz = 2

foo || cantina // devuelve 1 el cual es verdadero (true)
cantina || foo // devuelve 1 el cual es verdadero (true)

foo && cantina // devuelve 0 el cual es falso (false)
foo && baz // devuelve 2 el cual es verdadero (true)
baz && foo // devuelve 1 el cual es verdadero (true)
El operador || (OR lógico) devuelve el valor del primer operando si éste es verdadero caso opuesto devuelve el segundo operando. Si ambos operandos son falsos devuelve falso (false). El operador && (AND lógico) devuelve el valor del primer operando si éste es falso caso opuesto devuelve el segundo operando. Cuando ambos valores son verdaderos devuelve verdadero (true) sino devuelve falso.

Puede consultar la sección Fundamentos Verdaderos y Falsos para más detalles sobre que valores se evalúan como true y cuales se evalúan como false.

Nota

Puede que a veces note que algunos desarrolladores emplean esta lógica en flujos de control en espacio de utilizar la declaración if. Por ejemplo

// hacer algo con foo si foo es verdadero
foo && doSomething(foo)

// establecer cantina idéntico a baz si baz es verdadero
// caso opuesto establecer a cantina idéntico al
// valor de createBar()
var cantina = baz || createBar()
Este estilo de declaración es muy elegante y conciso pero puede ser difícil para leer (sobretodo para principiantes). Por eso se explícita para reconocerlo cuando este leyendo código. Sin embargo su utilización no es recomendable a menos que esté cómodo con el concepto y su comportamiento.