Volvamos a dos operadores lógicos.
que ya usamos antes,
pero aún no usamos todo su potencial.
Y estoy hablando del operador AND
y el operador OR,
y como podemos usarlos
por algo llamado cortocircuito.
Así que hasta este punto,
hemos usado operadores lógicos
solo para combinar valores booleanos.
Pero la verdad es que podemos hacer mucho más
con los operadores AND y OR.
Entonces, comencemos con el operador OR aquí.
Y entonces déjame registrar, tres,
o Jonás.
Así que eso es algo que no hicimos antes,
que es usar básicamente valores no booleanos aquí
como los operandos, ¿de acuerdo?
Entonces, veamos cuál será el resultado de esto,
y por alguna razón tengo que recargar aquí,
y ves que el resultado es tres.
Y eso significa que los resultados
del operador OR no siempre
tiene que ser un booleano.
Y eso es algo que no les mostré antes.
Entonces hay tres propiedades.
que no te dije antes sobre los operadores lógicos.
Primero, pueden usar cualquier tipo de datos.
Pueden devolver cualquier tipo de datos.
y hacen algo
llamado cortocircuito,
o como también lo llamamos evaluación de cortocircuito.
De hecho, aquí usamos dos valores
que no son booleanos, ¿de acuerdo?
Y luego devolvió un valor
eso no era un booleano.
Y ahora sobre el cortocircuito,
en el caso del operador OR,
cortocircuito significa que si el primer valor
es un valor verdadero,
inmediatamente devolverá ese primer valor.
Así que eso es exactamente lo que vemos aquí.
con los tres que es un valor veraz.
De nuevo, si el primer operando es verdadero aquí
en el operador OR,
entonces el otro operando ni siquiera será evaluado.
Entonces JavaScript ni siquiera lo mirará.
Y eso es lo que queremos decir con cortocircuito.
Y ahora vamos a hacer un poco más,
usemos la cadena vacía
o Jonas ahora.
Entonces digamos, verdadero o cero,
y luego digamos indefinido o nulo.
Y ahora antes de echar un vistazo al resultado,
tratar de adivinar cuáles son los resultados
de estas tres operaciones aquí será.
¿Así que hiciste eso?
Entonces, veamos.
Así que el primer resultado de este aquí es Jonas.
Y eso es porque esto aquí es un valor falso.
Y entonces, el segundo operando
en realidad también será evaluado, y ese es Jonas
y luego será devuelto.
Y aquí vemos de nuevo que el resultado
del operador OR
no tiene que ser un booleano.
Simplemente devolverá el valor veraz aquí.
A continuación tenemos verdadero o cero.
Y entonces este primer valor aquí es verdadero,
y de hecho, es incluso cierto,
y por lo tanto ese será simplemente el resultado
del operador
Y eso es lo que vemos aquí.
Y luego, aquí tenemos indefinido o nulo,
y como ya sabes, indefinido es un valor falso,
y entonces vamos al segundo operando,
para que no haya cortocircuito,
y entonces ese es el que va a ser devuelto.
Así que aquí vemos nulo,
y eso sucede aunque nulo
es también un valor falso.
Y ahora vamos a generalizar esto
a más operadores.
Así que puedo darte básicamente la regla general.
de cómo funciona este operador,
no importa con cuántos valores.
Así que digamos indefinido o cero
o cadena vacía,
o hola,
o 23,
o nulo.
Entonces, ¿cuál crees que será el resultado de este?
Y es hola.
Y eso es esencialmente porque hola aquí,
es el primer valor verdadero
en esta cadena de operaciones OR.
Así que empezamos con este,
tan indefinido es falso.
Y entonces pasamos al siguiente, que también es falso.
Y así luego a la siguiente, que también es falsa,
y luego nos saludamos
y hola es verdad
y por lo tanto cortocircuitará toda la evaluación
y será el valor devuelto, ¿de acuerdo?
Y si pensamos en esto,
entonces realmente tiene sentido.
Porque recuerda, en la operación OR,
el resultado es cierto,
si al menos un operando es verdadero, ¿verdad?
Entonces, si el primer operando ya es verdadero,
por ejemplo, como sucede aquí,
entonces JavaScript ni siquiera tiene que mirar
en los otros valores porque el resultado de la expresión
ya será cierto de todos modos.
Y entonces hará un cortocircuito y luego simplemente regresará
ese primer resultado.
Y ahora veamos una aplicación más práctica de esto.
Así que digamos que podría haber una propiedad
en el objeto restaurante con el número de comensales.
Así que algo como esto:
Restaurante dot num invitados,
pero de nuevo, no sabemos si existe.
Sin embargo, queremos definir básicamente una variable
en base a este número de invitados.
Y queremos establecer un valor predeterminado
si esto no existe.
Básicamente, lo que queremos hacer es esto.
Así que invitados, lo llamaré uno aquí,
y entonces lo que queremos hacer es esto,
queremos comprobar si existe,
y entonces el resultado debe ser
en realidad el restaurante dot num invitados,
pero si no existe,
entonces queremos establecer un valor predeterminado de 10.
Así que registremos invitados uno en la consola,
y entonces ves que ahora son 10.
Y eso es porque el restaurante dot num invitados
no existe, por lo que esto no está definido,
y por lo tanto 10 será el resultado
de este operador de tornería, ¿de acuerdo?
Pero ahora si establecemos la propiedad
como esto,
por ejemplo, a 23,
entonces los invitados uno va a tener 23.
Entonces, pero en lugar de hacer esto,
podemos aprovechar los cortocircuitos
y el operador OR.
Entonces, escribamos de nuevo el número de invitados del restaurante,
y luego simplemente o 10.
Así que analicemos por qué esto funciona.
Y primero almacene esto en una variable.
Así que invitados dos
es igual a esto
y luego la consola registra a los invitados dos.
Así que echemos un vistazo a por qué esto funciona
y comenzando de nuevo con deshabilitar esto.
Y ahora mismo los restaurantes salpican el número de invitados
es indefinido.
Entonces es un valor falso,
y como ya sabemos,
entonces el segundo valor aquí
será el resultado del operador OR.
Y así, ese es básicamente nuestro valor predeterminado de 10.
Así que echemos un vistazo y de hecho tenemos 10 aquí.
Pero ahora si lo volvemos a poner,
entonces el número de comensales del punto del restaurante ahora es 23,
que es un valor verdadero,
y por lo tanto el operador OR cortocircuita
y se convertirá en el valor de retorno,
o digamos el resultado de la operación.
Y ahora, de hecho, tenemos 23.
Y este es un método mucho más fácil.
de establecer valores predeterminados
que tener que lidiar con este tornero
o peor aún, una declaración if else, ¿de acuerdo?
Eso es un cortocircuito con el operador AND,
pero también podemos hacer lo mismo con el operador OR,
pero el operador AND también tiene cortocircuito.
Así que echemos un vistazo
y comenzará registrando algo en la consola aquí,
como una cuerda para separar,
para que no nos confundamos con los resultados
y la consola entonces.
Oh, pero antes de hablar sobre el operador AND aquí,
en realidad hay una cosa más
que necesito decirte aquí,
que es que ambas soluciones aquí,
esto y esto no funcionará
cuando el número de invitados es cero.
Entonces, veamos qué sucede.
Y ahora ambos tienen 10.
Y ese no es el resultado que queremos,
pero dado lo que ya sabemos, tiene sentido
porque esto ahora es cero,
por lo que es un valor falso,
y por lo tanto el segundo aquí será el resultado
de la operación y por lo tanto asignó a los invitados dos.
Sin embargo, cero es el número real de invitados.
Y ese es el valor que en realidad
tendrían dos invitados.
Pero en su lugar, se establece el valor predeterminado de 10.
Así que obviamente eso no es lo que queremos.
y exploraremos una gran solución a este problema
en realidad en la próxima conferencia.
Pero ahora, hablemos del operador AND.
Y básicamente cuando se trata de la evaluación de cortocircuitos,
el operador AND funciona exactamente de manera opuesta
del operador OR.
Entonces, veamos.
Cero y Jonas.
Y ahora el resultado de esto es cero.
Y entonces, lo que esto significa es que
los cortocircuitos del operador AND,
cuando el primer valor es false.
Y luego inmediatamente devuelve ese valor falso
sin siquiera evaluar el segundo operando.
Así que de nuevo, eso es exactamente lo contrario
de lo que pasa con el operador OR,
qué cortocircuitos cuando el primer operador es verdadero.
Así que ahora establezcamos un valor verdadero aquí,
o en realidad un valor veraz.
Y luego, en este caso, Jonas es devuelto.
Entonces, cuando es veraz, significa que la evaluación continúa.
y luego simplemente se devuelve el último valor.
Y una vez más, esto tiene sentido si lo pensamos.
Entonces el operador AND solo es verdadero
si todos los operandos son verdaderos.
Y así, si el primero aquí es falso,
entonces significa que el resultado completo de la operación AND
ya será falso de todos modos.
Y entonces no hay necesidad de siquiera mirar
en cualquiera de los otros operandos.
Así que creo que es una buena manera de memorizar
como funcionan ambos.
De todos modos, volvamos a generalizar.
Agregue esto a múltiples operandos aquí
y 23,
y nulo,
y jonas,
y entonces, ¿cuál crees que será el resultado esta vez?
Bien, veamos.
Y de hecho es nulo.
Y para entender por qué apliquemos la misma lógica que antes.
Así que este es un valor veraz,
y por lo tanto la evaluación continúa,
23 también es verdad,
pero entonces nulo es un valor falso
y por lo tanto la evaluación ya no necesita continuar
porque en este punto, todo el resultado
de la operación final va a ser falsa de todos modos.
Y luego, como resultado,
este es simplemente el valor que se devolverá
y es un cortocircuito el resto de la evaluación.
Así que ni siquiera echará un vistazo a Jonas aquí.
Está bien.
Y ahora veamos otro ejemplo práctico.
Entonces, digamos
si el restaurante no pide, pide pizza.
Básicamente, estamos comprobando si este método existe.
y luego si existe,
queremos llamarlo.
Así que el restaurante pide pizza,
digamos con champiñones
y espinacas.
Muchas veces podemos usar el operador AND
para evitar una declaración if como esta,
donde todo lo que queremos hacer es comprobar
si una determinada propiedad o valor realmente existe.
Bien, entonces en este caso aquí,
lo que estamos haciendo es básicamente fingir
que no sabemos si existe pedir pizza.
Y entonces primero verificamos si existe.
y solo entonces lo ejecutamos.
Y entonces esto ahora nos da champiñones y espinacas,
pero con el conocimiento que ganamos
sobre el operador AND,
podemos hacer esto de una manera más simple.
Así que podemos decir restaurante dot order pizza,
y luego, básicamente, si el restaurante pide pizza
no existe, por lo que no está definido,
luego cortocircuitará la evaluación
y no pasará nada más.
Y eso es esencialmente exactamente lo mismo
como esto si bloque aquí está haciendo.
Está bien, pero si existe.
Entonces, si es un valor real,
entonces la segunda parte aquí será evaluada.
Y así aquí en este segundo operando,
entonces podemos llamar a la función.
Bueno.
Y está perfectamente bien usar estos operandos,
el segundo operando` aquí para llamar a una función.
Podemos poner cualquier cosa aquí.
No tiene que ser solo un valor.
Ahora no estoy diciendo que deberías seguir adelante
y reemplace todas sus declaraciones if
con los operadores AND u OR,
así que por favor definitivamente no hagas eso
porque va a hacer que tu código sea muy difícil
para leer en el futuro.
Pero de todos modos, vamos ahora a resumir.
Entonces, el operador OR devolverá el primer valor verdadero
de todos los operandos,
o simplemente el último valor si todos son falsos.
Así que eso es lo que pasó aquí, ¿verdad?
Por otro lado,
el operador AND devolverá el primer valor falso
o el último valor si todos ellos son verídicos.
Y en cuanto a las aplicaciones prácticas,
podemos usar el operador OR para establecer valores predeterminados,
y podemos usar el operador AND
para ejecutar código en el segundo operando
si lo primero es cierto.
Así que juega un poco más con esto tal vez,
y luego pasemos al siguiente video
donde solucionaremos este problema que teniamos aqui
con este operador OR
y este cero.