From 35a6c721cd7f924b3bcf96412eba692e241ebb05 Mon Sep 17 00:00:00 2001 From: Sjesc Date: Thu, 16 May 2019 11:54:01 -0400 Subject: [PATCH 01/36] =?UTF-8?q?Traducci=C3=B3n=20de=20Logical=20Operator?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-alert-null-2-undefined/solution.md | 5 +- .../1-alert-null-2-undefined/task.md | 7 +- .../2-alert-or/solution.md | 14 +- .../11-logical-operators/2-alert-or/task.md | 7 +- .../3-alert-1-null-2/solution.md | 5 +- .../3-alert-1-null-2/task.md | 7 +- .../4-alert-and/solution.md | 9 +- .../11-logical-operators/4-alert-and/task.md | 7 +- .../5-alert-and-or/solution.md | 11 +- .../5-alert-and-or/task.md | 7 +- .../6-check-if-in-range/task.md | 6 +- .../7-check-if-out-range/solution.md | 5 +- .../7-check-if-out-range/task.md | 6 +- .../8-if-question/solution.md | 25 +- .../8-if-question/task.md | 13 +- .../9-check-login/solution.md | 32 +-- .../9-check-login/task.md | 20 +- .../11-logical-operators/article.md | 263 +++++++++--------- 18 files changed, 218 insertions(+), 231 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md index 8869d32e6..aa444844a 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md @@ -1,6 +1,5 @@ -The answer is `2`, that's the first truthy value. +La respuesta es `2`, ese es el primer valor verdadero. ```js run -alert( null || 2 || undefined ); +alert(null || 2 || undefined); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md index a7c9addfc..5988c96d3 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md @@ -2,11 +2,10 @@ importance: 5 --- -# What's the result of OR? +# ¿Cuál es el resultado de OR? -What is the code below going to output? +¿Qué va a imprimir el codigo debajo? ```js -alert( null || 2 || undefined ); +alert(null || 2 || undefined); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md index 8f4d664e8..c77908380 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md @@ -1,13 +1,13 @@ -The answer: first `1`, then `2`. +La repuesta: primero `1`, y entonces `2`. ```js run -alert( alert(1) || 2 || alert(3) ); +alert(alert(1) || 2 || alert(3)); ``` -The call to `alert` does not return a value. Or, in other words, it returns `undefined`. +La llamada a `alert` no retorna un valor. O, en otras palabras, retorna `undefined`. -1. The first OR `||` evaluates it's left operand `alert(1)`. That shows the first message with `1`. -2. The `alert` returns `undefined`, so OR goes on to the second operand searching for a truthy value. -3. The second operand `2` is truthy, so the execution is halted, `2` is returned and then shown by the outer alert. +1. El primer OR `||` evaluá su operando a la izquierda `alert(1)`. Eso muestra el primer mensaje con `1`. +2. El `alert` retorna `undefined`, asi que OR va hacia el segundo operando buscando un valor verdadero. +3. El segundo operando `2` es un valor verdadero, asi que la ejecución es detenida, `2` es retornado y mostrado por la alerta exterior. -There will be no `3`, because the evaluation does not reach `alert(3)`. +No va a haber `3`, porque la evaluación no alcanza a `alert(3)`. diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md index 3908fa2ec..d8d35c119 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md @@ -2,11 +2,10 @@ importance: 3 --- -# What's the result of OR'ed alerts? +# ¿Cuál es el resultado de las alertas aplicadas al operador OR? -What will the code below output? +¿Qué va a imprimir el codigo debajo? ```js -alert( alert(1) || 2 || alert(3) ); +alert(alert(1) || 2 || alert(3)); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md index 5c2455ef4..4a0e0823e 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md @@ -1,6 +1,5 @@ -The answer: `null`, because it's the first falsy value from the list. +La respuesta: `null`, porque es el primer valor falso de la lista. ```js run -alert( 1 && null && 2 ); +alert(1 && null && 2); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md index 043d431e4..86d017b44 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md @@ -2,11 +2,10 @@ importance: 5 --- -# What is the result of AND? +# ¿Cuál es el resultado de AND? -What is this code going to show? +¿Qué va a imprimir el codigo debajo? ```js -alert( 1 && null && 2 ); +alert(1 && null && 2); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md index b6fb10d72..a4b90f400 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md @@ -1,10 +1,9 @@ -The answer: `1`, and then `undefined`. +La respuesta: `1` y entonces `undefined`. ```js run -alert( alert(1) && alert(2) ); +alert(alert(1) && alert(2)); ``` -The call to `alert` returns `undefined` (it just shows a message, so there's no meaningful return). - -Because of that, `&&` evaluates the left operand (outputs `1`), and immediately stops, because `undefined` is a falsy value. And `&&` looks for a falsy value and returns it, so it's done. +La llamada a `alert`retorna `undefined` (solo muestra un mensaje, asi que no hay un valor que retornar significante) +Debido a ello, `&&` evaluá el operando a la izquierda (imprime `1`), e inmediatamente se detiene, porque `undefined` es un valor falso. Y `&&` busca un valor falso y lo retorna, asi que ya está hecho. diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md index 69f877b95..fd4847bd0 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md @@ -2,11 +2,10 @@ importance: 3 --- -# What is the result of AND'ed alerts? +# ¿Cuál es el resultado de las alertas aplicadas al operador AND? -What will this code show? +¿Qué va a imprimir el codigo debajo? ```js -alert( alert(1) && alert(2) ); +alert(alert(1) && alert(2)); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md index 25e3568f8..818d4fd33 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md @@ -1,16 +1,15 @@ -The answer: `3`. +La respuesta: `3`. ```js run -alert( null || 2 && 3 || 4 ); +alert(null || (2 && 3) || 4); ``` -The precedence of AND `&&` is higher than `||`, so it executes first. +La precedencia de AND `&&` es mayor que la de `||`, asi que se ejecuta primero. -The result of `2 && 3 = 3`, so the expression becomes: +El resultado de `2 && 3 = 3`, asi que la expresión se convierte en: ``` null || 3 || 4 ``` -Now the result is the first truthy value: `3`. - +Ahora el resultado sera el primer valor verdadero: `3`. diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md index b18bb9c51..a92f6691e 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md @@ -2,11 +2,10 @@ importance: 5 --- -# The result of OR AND OR +# El resultado de OR AND OR -What will the result be? +¿Cuál sera el resultado? ```js -alert( null || 2 && 3 || 4 ); +alert(null || (2 && 3) || 4); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index cc00ca9fc..b3765e6c7 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -2,8 +2,8 @@ importance: 3 --- -# Check the range between +# Comprueba el rango entre ellos -Write an "if" condition to check that `age` is between `14` and `90` inclusively. +Escribe una condición "if" para comprobar que `age`(edad) esta entre `14` y `90` inclusivemente. -"Inclusively" means that `age` can reach the edges `14` or `90`. +"Inclusivemente" significa que `age` puede llegar a ser uno de los extremos, `14` o `90` diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md index d1946a967..35a1ba906 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md @@ -1,12 +1,11 @@ -The first variant: +La primer variante: ```js if (!(age >= 14 && age <= 90)) ``` -The second variant: +La segunda variante: ```js if (age < 14 || age > 90) ``` - diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md index 7c22d6ad1..b6b328295 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md @@ -2,8 +2,8 @@ importance: 3 --- -# Check the range outside +# Comprueba el rango al exterior -Write an `if` condition to check that `age` is NOT between 14 and 90 inclusively. +Escribe una condición `if` para comprobar que `age` NO esta entre 14 y 90 inclusivemente. -Create two variants: the first one using NOT `!`, the second one -- without it. +Crea dos variantes: la primera usando NOT `!`, y la segunda -- sin usarlo. diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md index 210509758..2017fa0dd 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md @@ -1,20 +1,19 @@ -The answer: the first and the third will execute. +La respuesta: el primero y el tercero serán ejecutados. -Details: +Detalles: ```js run -// Runs. -// The result of -1 || 0 = -1, truthy -if (-1 || 0) alert( 'first' ); +// Corre. +// El resultado de -1 || 0 = -1, valor verdadero +if (-1 || 0) alert("primero"); -// Doesn't run -// -1 && 0 = 0, falsy -if (-1 && 0) alert( 'second' ); +// No corre. +// -1 && 0 = 0, valor falso +if (-1 && 0) alert("segundo"); -// Executes -// Operator && has a higher precedence than || -// so -1 && 1 executes first, giving us the chain: +// Se ejecuta +// El operador && tiene mayor precedencia que || +// Asi que -1 && 1 se ejecuta primero, dandonos la cadena: // null || -1 && 1 -> null || 1 -> 1 -if (null || -1 && 1) alert( 'third' ); +if (null || (-1 && 1)) alert("tercero"); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md index 55987121b..4aeac7790 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md @@ -2,15 +2,14 @@ importance: 5 --- -# A question about "if" +# Un pregunta acerca de "if" -Which of these `alert`s are going to execute? +¿Cualés de estos `alert`s va a ejecutarse? -What will the results of the expressions be inside `if(...)`? +¿Cualés van a ser los resultados de las expresiones dentro de `if(...)`? ```js -if (-1 || 0) alert( 'first' ); -if (-1 && 0) alert( 'second' ); -if (null || -1 && 1) alert( 'third' ); +if (-1 || 0) alert("first"); +if (-1 && 0) alert("second"); +if (null || (-1 && 1)) alert("third"); ``` - diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index b535650ec..2ac737471 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -1,25 +1,21 @@ - - ```js run demo -let userName = prompt("Who's there?", ''); - -if (userName == 'Admin') { - - let pass = prompt('Password?', ''); +let userName = prompt("Quién esta alli?", ""); - if (pass == 'TheMaster') { - alert( 'Welcome!' ); - } else if (pass == '' || pass == null) { - alert( 'Canceled.' ); - } else { - alert( 'Wrong password' ); - } +if (userName == "Admin") { + let pass = prompt("Contraseña?", ""); -} else if (userName == '' || userName == null) { - alert( 'Canceled' ); + if (pass == "TheMaster") { + alert("Bienvenido!"); + } else if (pass == "" || pass == null) { + alert("Cancelado."); + } else { + alert("Contraseña incorrecta"); + } +} else if (userName == "" || userName == null) { + alert("Canceledo"); } else { - alert( "I don't know you" ); + alert("No te conozco"); } ``` -Note the vertical indents inside the `if` blocks. They are technically not required, but make the code more readable. +Nota las sangrías verticales dentro de los bloques `if`. Tecnicamente no son necesarias, pero facilitan la redacción del código. diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index 780e674a9..ad9681f0a 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -2,24 +2,24 @@ importance: 3 --- -# Check the login +# Comprueba el inicio de sesión -Write the code which asks for a login with `prompt`. +Escribe un código que pregunte por el inicio de sesión con `propmt`. -If the visitor enters `"Admin"`, then `prompt` for a password, if the input is an empty line or `key:Esc` -- show "Canceled.", if it's another string -- then show "I don't know you". +Si el visitante ingresa `Admin`, entonces `prompt`(pregunta) por una contraseña, si la entrada es una linea vacía o `key:Esc` -- muestra "Cancelado.", si es otra cadena de texto -- entonces muestra "No te conozco". -The password is checked as follows: +La contraseña es comprobada así: -- If it equals "TheMaster", then show "Welcome!", -- Another string -- show "Wrong password", -- For an empty string or cancelled input, show "Canceled." +- Si iguala a "TheMaster", entonces muestra "Bienvenido!", +- Si es otra cadena de texto -- muetra "Contraseña incorrecta", +- Para una cadena de texto vacía o una entrada cancelada, muestra "Cancelado." -The schema: +El esquema: ![](ifelse_task.png) -Please use nested `if` blocks. Mind the overall readability of the code. +Por favor usa bloques anidados de `if`. Piensa en la legibilidad general del código. -Hint: passing an empty input to a prompt returns an empty string `''`. Pressing `key:ESC` during a prompt returns `null`. +Pista: pasando una entrada vacía a un prompt retorna una cadena de texto vacía `''`. Presionando `key:ESC` durante un prompt retorna `null`. [demo] diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 4932020ae..f01614b05 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -1,47 +1,48 @@ -# Logical operators +# Operadores Lógicos -There are three logical operators in JavaScript: `||` (OR), `&&` (AND), `!` (NOT). +Hay tres operadores lógicos en JavaScript: `||` (OR (O)), `&&` (AND (Y)), `!` (NOT (NO)). -Although they are called "logical", they can be applied to values of any type, not only boolean. Their result can also be of any type. +Aun que sean llamados lógicos, pueden ser aplicados a valores de cualquier tipo, no solo booleanos. El resultado también puede ser de cualquier tipo. -Let's see the details. +Veamos los detalles. ## || (OR) -The "OR" operator is represented with two vertical line symbols: +El operador `OR` es represtando con dos simbolos de linea verticales: ```js result = a || b; ``` -In classical programming, the logical OR is meant to manipulate boolean values only. If any of its arguments are `true`, it returns `true`, otherwise it returns `false`. +En la programación clasica, el OR lógico esta pensado para manipular solo valore booleanos. Si cualquiera de sus argumentos son `true`, retornara `true`, de lo contrario retornara `false`. -In JavaScript, the operator is a little bit trickier and more powerful. But first, let's see what happens with boolean values. +En JavaScript, el operador es un poco más complicado y poderoso. Pero primero, veamos que pasa con los valores booleanos. -There are four possible logical combinations: +Hay cuatro posibles combinaciones lógicas: ```js run -alert( true || true ); // true -alert( false || true ); // true -alert( true || false ); // true -alert( false || false ); // false +alert(true || true); // true (verdadero) +alert(false || true); // true +alert(true || false); // true +alert(false || false); // false (falso) ``` -As we can see, the result is always `true` except for the case when both operands are `false`. +Como podemos ver, los resultados son siempre `true` excepto en el caso de que ambos operandos sean `false` -If an operand is not a boolean, it's converted to a boolean for the evaluation. +Si un operando no es un booleano, entonces es convertido a un booleano para la evaluación. -For instance, the number `1` is treated as `true`, the number `0` as `false`: +Por ejemplo, el número `1` es tratado como `true`, el número `0` como `false`: ```js run -if (1 || 0) { // works just like if( true || false ) - alert( 'truthy!' ); +if (1 || 0) { + // Funciona como if( true || false ) + alert("valor verdadero!"); } ``` -Most of the time, OR `||` is used in an `if` statement to test if *any* of the given conditions is `true`. +La mayoría del tiempo, OR `||` es usando como una declaración de `if` para probar si _cualqueria_ de las condiciones dadas son `true` -For example: +Por ejemplo: ```js run let hour = 9; @@ -49,255 +50,257 @@ let hour = 9; *!* if (hour < 10 || hour > 18) { */!* - alert( 'The office is closed.' ); + alert( 'La oficina esta cerrada.' ); } ``` -We can pass more conditions: +Podemos pasar mas condiciones: ```js run let hour = 12; let isWeekend = true; if (hour < 10 || hour > 18 || isWeekend) { - alert( 'The office is closed.' ); // it is the weekend + alert("La oficina esta cerrada."); // Esta los fines de semana } ``` -## OR finds the first truthy value +## OR encuentra el primer valor verdadero -The logic described above is somewhat classical. Now, let's bring in the "extra" features of JavaScript. +La lógica descrita arriba es algo clásica. Ahora, vamos a traer las caracteristicas "extra" de JavaScript. -The extended algorithm works as follows. +El algoritmo extendido trabajo de la siguiente forma. -Given multiple OR'ed values: +Dado múltiples valores aplicados al operador OR: ```js result = value1 || value2 || value3; ``` -The OR `||` operator does the following: +El operador OR `||` realiza lo siguiente: -- Evaluates operands from left to right. -- For each operand, converts it to boolean. If the result is `true`, stops and returns the original value of that operand. -- If all operands have been evaluated (i.e. all were `false`), returns the last operand. +- Evalua los operandos de izquierda a derecha. +- Para cada operando, convierte el valor a booleano. Si el resultado es `true`, se detiene y retorna el valor orginal de ese operando. +- Si todos los operandos han sido evaluados (todos eran `false`), retorna el ultimo operando. -A value is returned in its original form, without the conversion. +Un valor es retornado en su forma original, sin la conversión. -In other words, a chain of OR `"||"` returns the first truthy value or the last one if no such value is found. +En otras palabras, una cadenade OR `"||"` retorna el primer valor verdadero o el último valor en caso de que dicho valor no sea encontrado. -For instance: +Por ejemplo: ```js run -alert( 1 || 0 ); // 1 (1 is truthy) -alert( true || 'no matter what' ); // (true is truthy) +alert(1 || 0); // 1 (1 es un valor verdado) +alert(true || "no matter what"); // (true es un valor verdadero) -alert( null || 1 ); // 1 (1 is the first truthy value) -alert( null || 0 || 1 ); // 1 (the first truthy value) -alert( undefined || null || 0 ); // 0 (all falsy, returns the last value) +alert(null || 1); // 1 (1 es el primer valor verdadero) +alert(null || 0 || 1); // 1 (el primer valor verdadero) +alert(undefined || null || 0); // 0 (todos son valores falsos, retorna el último valor) ``` -This leads to some interesting usage compared to a "pure, classical, boolean-only OR". +Esto lleva a varios usos interesantes comparados a el "puro, clásico, solo booleanos OR". -1. **Getting the first truthy value from a list of variables or expressions.** +1. **Consiguiendo el primer valor verdadero de una lista de expresiones.** - Imagine we have several variables which can either contain data or be `null/undefined`. How can we find the first one with data? + Imagina que tenemos varias variables que pueden contener datos o ser `null/undefined`. ¿Comó podemos encontrar el primero valor con datos? - We can use OR `||`: + Podemos usar OR `||`: - ```js run - let currentUser = null; - let defaultUser = "John"; + ```js run + let currentUser = null; + let defaultUser = "John"; - *!* - let name = currentUser || defaultUser || "unnamed"; - */!* + *!* + let name = currentUser || defaultUser || "sin nombre"; + */!* - alert( name ); // selects "John" – the first truthy value - ``` + alert( name ); // seleccioná "John" – el primer valor verdadero + ``` - If both `currentUser` and `defaultUser` were falsy, `"unnamed"` would be the result. -2. **Short-circuit evaluation.** + Si tanto `currentUser` como `defaultUser` eran valores falsos, `"sin nombre"` hubiera sido el resultado. - Operands can be not only values, but arbitrary expressions. OR evaluates and tests them from left to right. The evaluation stops when a truthy value is reached, and the value is returned. This process is called "a short-circuit evaluation" because it goes as short as possible from left to right. +2. **Evaluación de cortocircuito.** - This is clearly seen when the expression given as the second argument has a side effect like a variable assignment. + Los operandos no solo pueden ser valors, si no que tambien expresiones arbitrarias. OR los evalua y comprueba de izquierda a derecha. La evaluación termina cuando un valor verdadero es alcanzado, y dicho valor es retornado. Este proceso es llamado "evaluación de cortocircuito" porque va lo más corto posible de izquierda a derecha. - In the example below, `x` does not get assigned: + Esto es claramente visto cuando una expresión dada como segundo argumento tiene un efecto secundario como una asignación de variable. - ```js run no-beautify - let x; + En el ejemplo debajo, `x` no es asignada: - *!*true*/!* || (x = 1); + ```js run no-beautify + let x; - alert(x); // undefined, because (x = 1) not evaluated - ``` + *!*true*/!* || (x = 1); - If, instead, the first argument is `false`, `||` evaluates the second one, thus running the assignment: + alert(x); // undefined, porque (x = 1) no es evaluado. + ``` - ```js run no-beautify - let x; + Si, en vez, el primer argumento fuera `false`, `||` evaluaria el segundo, por tanto corriendo el asignamiento. - *!*false*/!* || (x = 1); + ```js run no-beautify + let x; - alert(x); // 1 - ``` + *!*false*/!* || (x = 1); - An assignment is a simple case. Other side effects can also be involved. + alert(x); // 1 + ``` - As we can see, such a use case is a "shorter way of doing `if`". The first operand is converted to boolean. If it's false, the second one is evaluated. + Un asignamiento es un caso simple. Otros efectos secundarios tambien puede ser usados. - Most of time, it's better to use a "regular" `if` to keep the code easy to understand, but sometimes this can be handy. + Como podemos ver, tal caso de uso es una "manera más corta de usar `if`". El primer operando es convertido a booleano. Si y el primero es falso, el segundo sera evaluado. + + La mayoría del tiempo, es mejor usar un `if` "normal" para mantener el código fácil de entender, pero a veces esto puede ser útil. ## && (AND) -The AND operator is represented with two ampersands `&&`: +El operador AND es representado con `&&`: ```js result = a && b; ``` -In classical programming, AND returns `true` if both operands are truthy and `false` otherwise: +En la programación clasica, AND retorna `true` si ambos operandos son valores verdaderos o de otro caso valores falsos. ```js run -alert( true && true ); // true -alert( false && true ); // false -alert( true && false ); // false -alert( false && false ); // false +alert(true && true); // true +alert(false && true); // false +alert(true && false); // false +alert(false && false); // false ``` -An example with `if`: +Un ejemplo con `if`: ```js run let hour = 12; let minute = 30; if (hour == 12 && minute == 30) { - alert( 'The time is 12:30' ); + alert("La hora es 12:30"); } ``` -Just as with OR, any value is allowed as an operand of AND: +Tal y como con OR, cualquier valor es permitido como operando de AND: Just as with OR, any value is allowed as an operand of AND: ```js run if (1 && 0) { // evaluated as true && false - alert( "won't work, because the result is falsy" ); + alert( "no funcionara, por que el resultado es un valor falso ); } ``` +## AND encuentra el primer valor verdadero y lo retorna -## AND finds the first falsy value - -Given multiple AND'ed values: +Dado varios múltiples valores aplicados al operador AND: ```js result = value1 && value2 && value3; ``` -The AND `&&` operator does the following: +El operador AND `&&` realiza lo siguiente: -- Evaluates operands from left to right. -- For each operand, converts it to a boolean. If the result is `false`, stops and returns the original value of that operand. -- If all operands have been evaluated (i.e. all were truthy), returns the last operand. +- Evalua los operandos de izquierda a derecha. +- Para cada operando, los convierte a un booleano. Si el resultado es `false`, se detiene y retorna el valor original de dicho operando. +- Si todos los operandos han sido evaluados (todos fueron valores verdaderos), retorna el último operando. -In other words, AND returns the first falsy value or the last value if none were found. +En otras palabras, AND retorna el primer valor falso o el último valor si ninguno fue encontrado. -The rules above are similar to OR. The difference is that AND returns the first *falsy* value while OR returns the first *truthy* one. +Las reglas de arriba son similares a las de OR. La difierence es que AND retorna el primer valor _falso_ mientras que OR retorna el primer valor _verdadero_. -Examples: +Ejemplo: ```js run -// if the first operand is truthy, -// AND returns the second operand: -alert( 1 && 0 ); // 0 -alert( 1 && 5 ); // 5 - -// if the first operand is falsy, -// AND returns it. The second operand is ignored -alert( null && 5 ); // null -alert( 0 && "no matter what" ); // 0 +// si el primer operando es un valor verdadero, +// AND retorna el segundo operando: +alert(1 && 0); // 0 +alert(1 && 5); // 5 + +// si el primer operando es un valor falso, +// AND lo retorna. El segundo operando es ignorado +alert(null && 5); // null +alert(0 && "no matter what"); // 0 ``` -We can also pass several values in a row. See how the first falsy one is returned: +Tambien podemos pasar varios valores en una fila. Observa como el primer valor falso es retornado: We can also pass several values in a row. See how the first falsy one is returned: ```js run -alert( 1 && 2 && null && 3 ); // null +alert(1 && 2 && null && 3); // null ``` -When all values are truthy, the last value is returned: +Cuando todos los valores son verdaderos, el último valor es retornado: ```js run -alert( 1 && 2 && 3 ); // 3, the last one +alert(1 && 2 && 3); // 3, el último. ``` -````smart header="Precedence of AND `&&` is higher than OR `||`" -The precedence of AND `&&` operator is higher than OR `||`. +`` smart header="La precedencia de AND `&&` es mayor que la de OR `||`" La precedencia del operador AND `&&` es mayor que la de OR `|| ``. -So the code `a && b || c && d` is essentially the same as if the `&&` expressions were in parentheses: `(a && b) || (c && d)`. -```` +Asi que el código `a && b || c && d` es esensialmente el mismo que si la expresiones `&&` estuvieran en parentesis: `(a && b) || (c && d)` -Just like OR, the AND `&&` operator can sometimes replace `if`. +Just como en OR, el operador AND `&&` puede ser algunas vece remplazado por `if`. -For instance: +Por ejemplo: ```js run let x = 1; -(x > 0) && alert( 'Greater than zero!' ); +x > 0 && alert("Mayor que cero!"); ``` -The action in the right part of `&&` would execute only if the evaluation reaches it. That is, only if `(x > 0)` is true. +La acción en la parte derecha de `&&` seria ejecutada solo si la evaluación la alcanza. Eso es, solo si `(x > 0)` que es verdadero. -So we basically have an analogue for: +Asi que basicamente tenemos un análogo para: ```js run let x = 1; if (x > 0) { - alert( 'Greater than zero!' ); + alert("Mayor que cero!"); } ``` -The variant with `&&` appears shorter. But `if` is more obvious and tends to be a little bit more readable. +La variante con `&&` parece más corta. Pero `if` es más obvio y tiende a ser un poco más legible. -So we recommend using every construct for its purpose: use `if` if we want if and use `&&` if we want AND. +Asi que recomendamos usar cada construcción para su propósito: usa `if` si queremos if y usa `&&` si queremos AND. So we recommend using every construct for its purpose: use `if` if we want if and use `&&` if we want AND. ## ! (NOT) -The boolean NOT operator is represented with an exclamation sign `!`. +El operador booleano NOT es representado con un signo de exclamación `!`. -The syntax is pretty simple: +La sintaxis es bastante simple: ```js result = !value; ``` -The operator accepts a single argument and does the following: +El operador acepta un solo argumento y realiza lo siguiente: -1. Converts the operand to boolean type: `true/false`. -2. Returns the inverse value. +1. Convierte el operando al tipo booleano: `true/false`. +2. Retorna el valor contrario. -For instance: +Por ejemplo: ```js run -alert( !true ); // false -alert( !0 ); // true +alert(!true); // false +alert(!0); // true ``` -A double NOT `!!` is sometimes used for converting a value to boolean type: +Un doble NOT `!!` es a veces usado para convertir un valor al tipo booleano: ```js run -alert( !!"non-empty string" ); // true -alert( !!null ); // false +alert(!!"cadena de texto no vacía"); // true +alert(!!null); // false ``` -That is, the first NOT converts the value to boolean and returns the inverse, and the second NOT inverses it again. In the end, we have a plain value-to-boolean conversion. +Eso es, el primer NOT convierte el valor a booleano y retorna el inverso, y el sgundo NOT lo invierte de nuevo. Al final, tenemos una simple conversión a booleano. -There's a little more verbose way to do the same thing -- a built-in `Boolean` function: +Hay una manera un poco mas verbosa de realizar lo mismo -- una función integrada `Boolean`: ```js run -alert( Boolean("non-empty string") ); // true -alert( Boolean(null) ); // false +alert(Boolean("cadena de texto no vacía")); // true +alert(Boolean(null)); // false +``` + +La precedencia de NOT `!` es la mayor de todos los operadores lógicos, asi que siempre se ejecuta primero, antes de `&&` o `||`. + ``` -The precedence of NOT `!` is the highest of all logical operators, so it always executes first, before `&&` or `||`. +``` From f1ab3cccb2ae234eeb209f47c3e41e1782aa5a24 Mon Sep 17 00:00:00 2001 From: Sjesc Date: Thu, 16 May 2019 12:07:22 -0400 Subject: [PATCH 02/36] Fix small details --- .../11-logical-operators/article.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index f01614b05..fae99d2e2 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -40,7 +40,7 @@ if (1 || 0) { } ``` -La mayoría del tiempo, OR `||` es usando como una declaración de `if` para probar si _cualqueria_ de las condiciones dadas son `true` +La mayoría del tiempo, OR `||` es usando como una declaración de `if` para probar si *cualqueria* de las condiciones dadas son `true` Por ejemplo: @@ -203,7 +203,7 @@ El operador AND `&&` realiza lo siguiente: En otras palabras, AND retorna el primer valor falso o el último valor si ninguno fue encontrado. -Las reglas de arriba son similares a las de OR. La difierence es que AND retorna el primer valor _falso_ mientras que OR retorna el primer valor _verdadero_. +Las reglas de arriba son similares a las de OR. La difierence es que AND retorna el primer valor *falso* mientras que OR retorna el primer valor *verdadero*. Ejemplo: @@ -231,11 +231,14 @@ Cuando todos los valores son verdaderos, el último valor es retornado: alert(1 && 2 && 3); // 3, el último. ``` -`` smart header="La precedencia de AND `&&` es mayor que la de OR `||`" La precedencia del operador AND `&&` es mayor que la de OR `|| ``. +```smart header="La precedencia de AND `&&` es mayor que la de OR `||`" -Asi que el código `a && b || c && d` es esensialmente el mismo que si la expresiones `&&` estuvieran en parentesis: `(a && b) || (c && d)` +La precedencia del operador AND `&&` es mayor que la de OR `|| ``. -Just como en OR, el operador AND `&&` puede ser algunas vece remplazado por `if`. +Así que el código `a && b || c && d` es esensialmente el mismo que si la expresiones `&&` estuvieran en parentesis: `(a && b) || (c && d)` +``` + +Justo como en OR, el operador AND `&&` puede ser algunas vece remplazado por `if`. Por ejemplo: @@ -243,7 +246,7 @@ Por ejemplo: let x = 1; x > 0 && alert("Mayor que cero!"); -``` +```` La acción en la parte derecha de `&&` seria ejecutada solo si la evaluación la alcanza. Eso es, solo si `(x > 0)` que es verdadero. From 85b9fcd915c33d31c2fcbdbf2089f3463d671da4 Mon Sep 17 00:00:00 2001 From: Sjesc Date: Thu, 16 May 2019 12:10:18 -0400 Subject: [PATCH 03/36] Translate string Fix typo --- 1-js/02-first-steps/11-logical-operators/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index fae99d2e2..0aa4ae651 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -85,13 +85,13 @@ El operador OR `||` realiza lo siguiente: Un valor es retornado en su forma original, sin la conversión. -En otras palabras, una cadenade OR `"||"` retorna el primer valor verdadero o el último valor en caso de que dicho valor no sea encontrado. +En otras palabras, una cadena de OR `"||"` retorna el primer valor verdadero o el último valor en caso de que dicho valor no sea encontrado. Por ejemplo: ```js run alert(1 || 0); // 1 (1 es un valor verdado) -alert(true || "no matter what"); // (true es un valor verdadero) +alert(true || "sin importar que"); // (true es un valor verdadero) alert(null || 1); // 1 (1 es el primer valor verdadero) alert(null || 0 || 1); // 1 (el primer valor verdadero) From 865f4e762325146f6ccb93fbe3b003405f2be4d0 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sat, 18 May 2019 01:54:55 -0300 Subject: [PATCH 04/36] fixes --- .../11-logical-operators/article.md | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 0aa4ae651..343c25991 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -2,23 +2,23 @@ Hay tres operadores lógicos en JavaScript: `||` (OR (O)), `&&` (AND (Y)), `!` (NOT (NO)). -Aun que sean llamados lógicos, pueden ser aplicados a valores de cualquier tipo, no solo booleanos. El resultado también puede ser de cualquier tipo. +Aunque sean llamados lógicos, pueden ser aplicados a valores de cualquier tipo, no solo booleanos. El resultado también puede ser de cualquier tipo. Veamos los detalles. ## || (OR) -El operador `OR` es represtando con dos simbolos de linea verticales: +El operador `OR` se representa con dos simbolos de linea vertical: ```js result = a || b; ``` -En la programación clasica, el OR lógico esta pensado para manipular solo valore booleanos. Si cualquiera de sus argumentos son `true`, retornara `true`, de lo contrario retornara `false`. +En la programación clasica, el OR lógico esta pensado para manipular solo valores booleanos. Si cualquiera de sus argumentos es `true`, retorna `true`, de lo contrario retorna `false`. -En JavaScript, el operador es un poco más complicado y poderoso. Pero primero, veamos que pasa con los valores booleanos. +En JavaScript, el operador es un poco más complicado y poderoso. Pero primero, veamos qué pasa con los valores booleanos. -Hay cuatro posibles combinaciones lógicas: +Hay cuatro combinaciones lógicas posibles: ```js run alert(true || true); // true (verdadero) @@ -27,20 +27,19 @@ alert(true || false); // true alert(false || false); // false (falso) ``` -Como podemos ver, los resultados son siempre `true` excepto en el caso de que ambos operandos sean `false` +Como podemos ver, los resultados son siempre `true` excepto cuando ambos operandos son `false`. -Si un operando no es un booleano, entonces es convertido a un booleano para la evaluación. +Si un operando no es un booleano, se lo convierte a booleano para la evaluación. Por ejemplo, el número `1` es tratado como `true`, el número `0` como `false`: ```js run -if (1 || 0) { - // Funciona como if( true || false ) +if (1 || 0) { // Funciona como if( true || false ) alert("valor verdadero!"); } ``` -La mayoría del tiempo, OR `||` es usando como una declaración de `if` para probar si *cualqueria* de las condiciones dadas son `true` +La mayoría de las veces, OR `||` es usado en una declaración `if` para probar si *cualquiera* de las condiciones dadas es `true`. Por ejemplo: @@ -61,15 +60,15 @@ let hour = 12; let isWeekend = true; if (hour < 10 || hour > 18 || isWeekend) { - alert("La oficina esta cerrada."); // Esta los fines de semana + alert("La oficina esta cerrada."); // Es fin de semana } ``` ## OR encuentra el primer valor verdadero -La lógica descrita arriba es algo clásica. Ahora, vamos a traer las caracteristicas "extra" de JavaScript. +La lógica descrita arriba es algo clásica. Ahora, mostremos las características "extra" de JavaScript. -El algoritmo extendido trabajo de la siguiente forma. +El algoritmo extendido trabaja de la siguiente forma. Dado múltiples valores aplicados al operador OR: @@ -91,18 +90,18 @@ Por ejemplo: ```js run alert(1 || 0); // 1 (1 es un valor verdado) -alert(true || "sin importar que"); // (true es un valor verdadero) +alert(true || "cualquier valor"); // (true es un valor verdadero) alert(null || 1); // 1 (1 es el primer valor verdadero) alert(null || 0 || 1); // 1 (el primer valor verdadero) alert(undefined || null || 0); // 0 (todos son valores falsos, retorna el último valor) ``` -Esto lleva a varios usos interesantes comparados a el "puro, clásico, solo booleanos OR". +Esto brinda varios usos interesantes comparados al "OR puro, clásico, de solo booleanos". -1. **Consiguiendo el primer valor verdadero de una lista de expresiones.** +1. **Consiguiendo el primer valor verdadero de una lista de variables o expresiones.** - Imagina que tenemos varias variables que pueden contener datos o ser `null/undefined`. ¿Comó podemos encontrar el primero valor con datos? + Imagina que tenemos múltiples variables que pueden contener datos o ser `null/undefined`. ¿Cómo podemos encontrar el primer valor que contenga datos? Podemos usar OR `||`: @@ -114,16 +113,16 @@ Esto lleva a varios usos interesantes comparados a el "puro, clásico, solo bool let name = currentUser || defaultUser || "sin nombre"; */!* - alert( name ); // seleccioná "John" – el primer valor verdadero + alert( name ); // selecciona "John" – el primer valor verdadero ``` - Si tanto `currentUser` como `defaultUser` eran valores falsos, `"sin nombre"` hubiera sido el resultado. + Si tanto `currentUser` como `defaultUser` hubieran sido valores falsos, `"sin nombre"` hubiera sido el resultado. 2. **Evaluación de cortocircuito.** - Los operandos no solo pueden ser valors, si no que tambien expresiones arbitrarias. OR los evalua y comprueba de izquierda a derecha. La evaluación termina cuando un valor verdadero es alcanzado, y dicho valor es retornado. Este proceso es llamado "evaluación de cortocircuito" porque va lo más corto posible de izquierda a derecha. + Los operandos no solo pueden ser valores, sino que tambien expresiones arbitrarias. OR los evalua y comprueba de izquierda a derecha. La evaluación termina cuando un valor verdadero es alcanzado, y dicho valor es retornado. Este proceso es llamado "evaluación de cortocircuito" porque avanza lo menos posible de izquierda a derecha. - Esto es claramente visto cuando una expresión dada como segundo argumento tiene un efecto secundario como una asignación de variable. + Esto se ve claramente cuando la expresión dada como segundo argumento tiene un efecto secundario como una asignación de variable. En el ejemplo debajo, `x` no es asignada: @@ -135,7 +134,7 @@ Esto lleva a varios usos interesantes comparados a el "puro, clásico, solo bool alert(x); // undefined, porque (x = 1) no es evaluado. ``` - Si, en vez, el primer argumento fuera `false`, `||` evaluaria el segundo, por tanto corriendo el asignamiento. + Si, en cambio, el primer argumento fuera `false`, `||` evaluaría el segundo, realizando la asignación. ```js run no-beautify let x; @@ -145,11 +144,11 @@ Esto lleva a varios usos interesantes comparados a el "puro, clásico, solo bool alert(x); // 1 ``` - Un asignamiento es un caso simple. Otros efectos secundarios tambien puede ser usados. + Una asignación es un caso simple. Puede haber efectos secundarios, los cuales no se notarán si la evaluación no los alcanza. - Como podemos ver, tal caso de uso es una "manera más corta de usar `if`". El primer operando es convertido a booleano. Si y el primero es falso, el segundo sera evaluado. + Como podemos ver, tal caso de uso es una "manera más corta de usar `if`". El primer operando es convertido a booleano. Si el primero es falso, el segundo sera evaluado. - La mayoría del tiempo, es mejor usar un `if` "normal" para mantener el código fácil de entender, pero a veces esto puede ser útil. + La mayor parte del tiempo, es mejor usar un `if` "normal" para mantener el código fácil de entender, pero a veces esto puede ser útil. ## && (AND) @@ -159,7 +158,7 @@ El operador AND es representado con `&&`: result = a && b; ``` -En la programación clasica, AND retorna `true` si ambos operandos son valores verdaderos o de otro caso valores falsos. +En la programación clasica, AND retorna `true` si ambos operandos son valores verdaderos y falso en cualquier otro caso. ```js run alert(true && true); // true @@ -179,17 +178,17 @@ if (hour == 12 && minute == 30) { } ``` -Tal y como con OR, cualquier valor es permitido como operando de AND: Just as with OR, any value is allowed as an operand of AND: +Al igual que con OR, cualquier valor es permitido como operando de AND: ```js run -if (1 && 0) { // evaluated as true && false - alert( "no funcionara, por que el resultado es un valor falso ); +if (1 && 0) { // evaluado como true && false + alert( "no funcionará porque el resultado es un valor falso" ); } ``` -## AND encuentra el primer valor verdadero y lo retorna +## AND encuentra el primer valor verdadero -Dado varios múltiples valores aplicados al operador AND: +Dado múltiples valores aplicados al operador AND: ```js result = value1 && value2 && value3; @@ -203,7 +202,7 @@ El operador AND `&&` realiza lo siguiente: En otras palabras, AND retorna el primer valor falso o el último valor si ninguno fue encontrado. -Las reglas de arriba son similares a las de OR. La difierence es que AND retorna el primer valor *falso* mientras que OR retorna el primer valor *verdadero*. +Las reglas anteriores son similares a las de OR. La difierence es que AND retorna el primer valor *falso* mientras que OR retorna el primer valor *verdadero*. Ejemplo: @@ -216,10 +215,10 @@ alert(1 && 5); // 5 // si el primer operando es un valor falso, // AND lo retorna. El segundo operando es ignorado alert(null && 5); // null -alert(0 && "no matter what"); // 0 +alert(0 && "cualquier valor"); // 0 ``` -Tambien podemos pasar varios valores en una fila. Observa como el primer valor falso es retornado: We can also pass several values in a row. See how the first falsy one is returned: +También podemos pasar varios valores de una vez. Observa como el primer valor falso es retornado: ```js run alert(1 && 2 && null && 3); // null @@ -233,12 +232,12 @@ alert(1 && 2 && 3); // 3, el último. ```smart header="La precedencia de AND `&&` es mayor que la de OR `||`" -La precedencia del operador AND `&&` es mayor que la de OR `|| ``. +La precedencia del operador AND `&&` es mayor que la de OR `||`. -Así que el código `a && b || c && d` es esensialmente el mismo que si la expresiones `&&` estuvieran en parentesis: `(a && b) || (c && d)` +Así que el código `a && b || c && d` es básicamente el mismo que si la expresiones `&&` estuvieran entre paréntesis: `(a && b) || (c && d)` ``` -Justo como en OR, el operador AND `&&` puede ser algunas vece remplazado por `if`. +Justo como en OR, el operador AND `&&` puede reemplazar en ocasiones al `if`. Por ejemplo: @@ -248,9 +247,9 @@ let x = 1; x > 0 && alert("Mayor que cero!"); ```` -La acción en la parte derecha de `&&` seria ejecutada solo si la evaluación la alcanza. Eso es, solo si `(x > 0)` que es verdadero. +La acción en la parte derecha de `&&` sería ejecutada sólo si la evaluación la alcanza. Eso es, solo si `(x > 0)` es verdadero. -Asi que basicamente tenemos un análogo para: +Así que básicamente tenemos un análogo para: ```js run let x = 1; @@ -262,7 +261,7 @@ if (x > 0) { La variante con `&&` parece más corta. Pero `if` es más obvio y tiende a ser un poco más legible. -Asi que recomendamos usar cada construcción para su propósito: usa `if` si queremos if y usa `&&` si queremos AND. So we recommend using every construct for its purpose: use `if` if we want if and use `&&` if we want AND. +Así que recomendamos usar cada construcción para su propósito: usar `if` si queremos if y usar `&&` si queremos AND. ## ! (NOT) From ec93c162d619115d5a5927c9135f7dd46a21489b Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:02:10 -0300 Subject: [PATCH 05/36] fix 2 --- 1-js/02-first-steps/11-logical-operators/article.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 343c25991..f63ca6d88 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -265,7 +265,7 @@ Así que recomendamos usar cada construcción para su propósito: usar `if` si q ## ! (NOT) -El operador booleano NOT es representado con un signo de exclamación `!`. +El operador booleano NOT se representa con un signo de exclamación `!`. La sintaxis es bastante simple: @@ -292,9 +292,9 @@ alert(!!"cadena de texto no vacía"); // true alert(!!null); // false ``` -Eso es, el primer NOT convierte el valor a booleano y retorna el inverso, y el sgundo NOT lo invierte de nuevo. Al final, tenemos una simple conversión a booleano. +Eso es, el primer NOT convierte el valor a booleano y retorna el inverso, y el segundo NOT lo invierte de nuevo. Al final, tenemos una simple conversión a booleano. -Hay una manera un poco mas verbosa de realizar lo mismo -- una función integrada `Boolean`: +Hay una manera un poco mas prolija de realizar lo mismo -- una función integrada `Boolean`: ```js run alert(Boolean("cadena de texto no vacía")); // true @@ -303,6 +303,3 @@ alert(Boolean(null)); // false La precedencia de NOT `!` es la mayor de todos los operadores lógicos, asi que siempre se ejecuta primero, antes de `&&` o `||`. -``` - -``` From b109d94b375a6c14aa1145ac6edf536369275d14 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:14:07 -0300 Subject: [PATCH 06/36] fix 3 --- .../11-logical-operators/1-alert-null-2-undefined/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md index 5988c96d3..49b2a56bd 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md @@ -4,7 +4,7 @@ importance: 5 # ¿Cuál es el resultado de OR? -¿Qué va a imprimir el codigo debajo? +¿Cuál será la salida del siguiente código? ```js alert(null || 2 || undefined); From 335ce5ff680dbab214f7db170bb4232d09fd43e2 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:21:22 -0300 Subject: [PATCH 07/36] fix 4 --- .../11-logical-operators/2-alert-or/solution.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md index c77908380..e7ef801f5 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md @@ -1,13 +1,13 @@ -La repuesta: primero `1`, y entonces `2`. +La repuesta: primero `1`, después `2`. ```js run -alert(alert(1) || 2 || alert(3)); +alert( alert(1) || 2 || alert(3) ); ``` La llamada a `alert` no retorna un valor. O, en otras palabras, retorna `undefined`. -1. El primer OR `||` evaluá su operando a la izquierda `alert(1)`. Eso muestra el primer mensaje con `1`. -2. El `alert` retorna `undefined`, asi que OR va hacia el segundo operando buscando un valor verdadero. -3. El segundo operando `2` es un valor verdadero, asi que la ejecución es detenida, `2` es retornado y mostrado por la alerta exterior. +1. El primer OR `||` evalua el operando de la izquierda `alert(1)`. Eso muestra el primer mensaje con `1`. +2. El `alert` retorna `undefined`, por lo que OR se dirige al segundo operando buscando un valor verdadero. +3. El segundo operando `2` es un valor verdadero, por lo que se detiene la ejecución, se retorna `2` y es mostrado por el alert exterior. -No va a haber `3`, porque la evaluación no alcanza a `alert(3)`. +No habrá `3` debido a que la evaluación no alcanza a `alert(3)`. From 0bac3ae48452242afaf47650df9b7cb37a22dd6c Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:23:04 -0300 Subject: [PATCH 08/36] fix 5 --- 1-js/02-first-steps/11-logical-operators/2-alert-or/task.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md index d8d35c119..804461453 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md @@ -4,8 +4,8 @@ importance: 3 # ¿Cuál es el resultado de las alertas aplicadas al operador OR? -¿Qué va a imprimir el codigo debajo? +¿Cuál será la salida del siguiente código? ```js -alert(alert(1) || 2 || alert(3)); +alert( alert(1) || 2 || alert(3) ); ``` From b7f27dc35a83fabbe2b10cca7d5f2148d37d2b59 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:24:33 -0300 Subject: [PATCH 09/36] Update solution.md --- .../11-logical-operators/3-alert-1-null-2/solution.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md index 4a0e0823e..0af868958 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md @@ -1,5 +1,6 @@ La respuesta: `null`, porque es el primer valor falso de la lista. ```js run -alert(1 && null && 2); +alert( 1 && null && 2 ); ``` + From 6d0f0a6efef094907d83fe0da3e147fa9c1de538 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:25:33 -0300 Subject: [PATCH 10/36] Update task.md --- .../11-logical-operators/3-alert-1-null-2/task.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md index 86d017b44..910a417e0 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md @@ -4,8 +4,9 @@ importance: 5 # ¿Cuál es el resultado de AND? -¿Qué va a imprimir el codigo debajo? +¿Cuál será la salida del siguiente código? ```js -alert(1 && null && 2); +alert( 1 && null && 2 ); ``` + From 885c3fed15cb32131bfaa8816323ba2ae071bef9 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:30:28 -0300 Subject: [PATCH 11/36] Update solution.md --- .../11-logical-operators/4-alert-and/solution.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md index a4b90f400..a0b0e083e 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md @@ -1,9 +1,9 @@ -La respuesta: `1` y entonces `undefined`. +La respuesta: `1` y después `undefined`. ```js run -alert(alert(1) && alert(2)); +alert( alert(1) && alert(2) ); ``` -La llamada a `alert`retorna `undefined` (solo muestra un mensaje, asi que no hay un valor que retornar significante) +La llamada a `alert` retorna `undefined` (solo muestra un mensaje, asi que no hay un valor que retornar relevante) -Debido a ello, `&&` evaluá el operando a la izquierda (imprime `1`), e inmediatamente se detiene, porque `undefined` es un valor falso. Y `&&` busca un valor falso y lo retorna, asi que ya está hecho. +Debido a ello, `&&` evalua el operando de la izquierda (imprime `1`) e inmediatamente se detiene porque `undefined` es un valor falso. Como `&&` busca un valor falso y lo retorna, ya está. From e306baec8baefd41d493502db259c7a4bdc8f337 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:31:42 -0300 Subject: [PATCH 12/36] Update task.md --- 1-js/02-first-steps/11-logical-operators/4-alert-and/task.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md index fd4847bd0..e3c318884 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md @@ -4,8 +4,9 @@ importance: 3 # ¿Cuál es el resultado de las alertas aplicadas al operador AND? -¿Qué va a imprimir el codigo debajo? +¿Cuál será la salida del siguiente código? ```js -alert(alert(1) && alert(2)); +alert( alert(1) && alert(2) ); ``` + From 05c8fa6838387be9247350e9e3494ef3e6469cf5 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:32:42 -0300 Subject: [PATCH 13/36] Update solution.md --- .../11-logical-operators/5-alert-and-or/solution.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md index 818d4fd33..92d6fef5f 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md @@ -1,15 +1,15 @@ La respuesta: `3`. ```js run -alert(null || (2 && 3) || 4); +alert( null || 2 && 3 || 4 ); ``` La precedencia de AND `&&` es mayor que la de `||`, asi que se ejecuta primero. -El resultado de `2 && 3 = 3`, asi que la expresión se convierte en: +El resultado de `2 && 3 = 3`, por lo que la expresión se convierte en: ``` null || 3 || 4 ``` -Ahora el resultado sera el primer valor verdadero: `3`. +Ahora el resultado será el primer valor verdadero: `3`. From 1a7bb8a14d48b41d3e197885df9b7a241e96e215 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:33:12 -0300 Subject: [PATCH 14/36] Update task.md --- .../11-logical-operators/5-alert-and-or/task.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md index a92f6691e..2e97e602a 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md @@ -4,8 +4,9 @@ importance: 5 # El resultado de OR AND OR -¿Cuál sera el resultado? +¿Cuál será el resultado? ```js -alert(null || (2 && 3) || 4); +alert( null || 2 && 3 || 4 ); ``` + From 682cda529035bf433d6c79432cfdc4f6c540cb2d Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:35:30 -0300 Subject: [PATCH 15/36] Update task.md --- .../11-logical-operators/6-check-if-in-range/task.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index b3765e6c7..2f7fe0b8e 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -4,6 +4,6 @@ importance: 3 # Comprueba el rango entre ellos -Escribe una condición "if" para comprobar que `age`(edad) esta entre `14` y `90` inclusivemente. +Escribe una condición "if" para comprobar que `age`(edad) está entre `14` y `90` inclusivamente. -"Inclusivemente" significa que `age` puede llegar a ser uno de los extremos, `14` o `90` +"Inclusivamente" significa que `age` puede llegar a ser uno de los extremos, `14` o `90`. From a2fac86bff1770a4d10084a4aebfb62c24537b72 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:35:47 -0300 Subject: [PATCH 16/36] Update solution.md --- .../11-logical-operators/7-check-if-out-range/solution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md index 35a1ba906..dd8c08364 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md @@ -9,3 +9,4 @@ La segunda variante: ```js if (age < 14 || age > 90) ``` + From 7f940f131ba6a83e71e5e6b0f86194e8e4a00f19 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:38:00 -0300 Subject: [PATCH 17/36] Update task.md --- .../11-logical-operators/7-check-if-out-range/task.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md index b6b328295..c97e08312 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md @@ -2,8 +2,8 @@ importance: 3 --- -# Comprueba el rango al exterior +# Comprueba el rango por fuera -Escribe una condición `if` para comprobar que `age` NO esta entre 14 y 90 inclusivemente. +Escribe una condición `if` para comprobar que `age` NO está entre 14 y 90 inclusivemente. Crea dos variantes: la primera usando NOT `!`, y la segunda -- sin usarlo. From 36c1b7d01e8deba03e571d00f58b057b457f4b96 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:39:49 -0300 Subject: [PATCH 18/36] Update solution.md --- .../11-logical-operators/8-if-question/solution.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md index 2017fa0dd..542624637 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md @@ -5,15 +5,15 @@ Detalles: ```js run // Corre. // El resultado de -1 || 0 = -1, valor verdadero -if (-1 || 0) alert("primero"); +if (-1 || 0) alert( "primero" ); // No corre. // -1 && 0 = 0, valor falso -if (-1 && 0) alert("segundo"); +if (-1 && 0) alert( "segundo" ); // Se ejecuta // El operador && tiene mayor precedencia que || -// Asi que -1 && 1 se ejecuta primero, dandonos la cadena: +// Así que -1 && 1 se ejecuta primero, dándonos la cadena: // null || -1 && 1 -> null || 1 -> 1 -if (null || (-1 && 1)) alert("tercero"); +if (null || -1 && 1) alert( "tercero" ); ``` From 32b47447d6fc42fc81b507ee215832c695dce1b4 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:40:58 -0300 Subject: [PATCH 19/36] Update task.md --- .../11-logical-operators/8-if-question/task.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md index 4aeac7790..c27278f0a 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md @@ -4,12 +4,13 @@ importance: 5 # Un pregunta acerca de "if" -¿Cualés de estos `alert`s va a ejecutarse? +¿Cuáles de estos `alert`s va a ejecutarse? -¿Cualés van a ser los resultados de las expresiones dentro de `if(...)`? +¿Cuáles serán los resultados de las expresiones dentro de `if(...)`? ```js -if (-1 || 0) alert("first"); -if (-1 && 0) alert("second"); -if (null || (-1 && 1)) alert("third"); +if (-1 || 0) alert( "first" ); +if (-1 && 0) alert( "second" ); +if (null || -1 && 1) alert( "third" ); ``` + From 4b8c0a6f761b92168c0240d1e8a2f42341052ca0 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:44:51 -0300 Subject: [PATCH 20/36] Update solution.md --- .../9-check-login/solution.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index 2ac737471..687a4e0e9 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -1,21 +1,24 @@ + + ```js run demo -let userName = prompt("Quién esta alli?", ""); +let userName = prompt("Quién está ahí?", ""); if (userName == "Admin") { + let pass = prompt("Contraseña?", ""); if (pass == "TheMaster") { - alert("Bienvenido!"); + alert( "Bienvenido!" ); } else if (pass == "" || pass == null) { - alert("Cancelado."); + alert( "Cancelado." ); } else { - alert("Contraseña incorrecta"); + alert( "Contraseña incorrecta" ); } } else if (userName == "" || userName == null) { - alert("Canceledo"); + alert( "Canceledo" ); } else { - alert("No te conozco"); + alert( "No te conozco" ); } ``` -Nota las sangrías verticales dentro de los bloques `if`. Tecnicamente no son necesarias, pero facilitan la redacción del código. +Nota las sangrías verticales dentro de los bloques `if`. Técnicamente no son necesarias, pero facilitan la lectura del código. From 9c17870b01c124767e5658a9a595322626798a55 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Sun, 19 May 2019 21:48:07 -0300 Subject: [PATCH 21/36] Update task.md --- .../11-logical-operators/9-check-login/task.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index ad9681f0a..cf5fe5e30 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -6,11 +6,11 @@ importance: 3 Escribe un código que pregunte por el inicio de sesión con `propmt`. -Si el visitante ingresa `Admin`, entonces `prompt`(pregunta) por una contraseña, si la entrada es una linea vacía o `key:Esc` -- muestra "Cancelado.", si es otra cadena de texto -- entonces muestra "No te conozco". +Si el visitante ingresa `"Admin"`, entonces `prompt`(pregunta) por una contraseña, si la entrada es una linea vacía o `key:Esc` -- muestra "Cancelado.", si es otra cadena de texto -- entonces muestra "No te conozco". -La contraseña es comprobada así: +La contraseña se comprueba así: -- Si iguala a "TheMaster", entonces muestra "Bienvenido!", +- Si es igual a "TheMaster", entonces muestra "Bienvenido!", - Si es otra cadena de texto -- muetra "Contraseña incorrecta", - Para una cadena de texto vacía o una entrada cancelada, muestra "Cancelado." @@ -20,6 +20,6 @@ El esquema: Por favor usa bloques anidados de `if`. Piensa en la legibilidad general del código. -Pista: pasando una entrada vacía a un prompt retorna una cadena de texto vacía `''`. Presionando `key:ESC` durante un prompt retorna `null`. +Pista: si se le pasa una entrada vacía a un prompt, retorna una cadena de texto vacía `''`. Presionando `key:ESC` durante un prompt retorna `null`. [demo] From 847d5f5ac95736939cb77a9921261bf6a1027dc4 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:34:47 -0300 Subject: [PATCH 22/36] Update solution.md --- .../11-logical-operators/1-alert-null-2-undefined/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md index aa444844a..b8da8ec85 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md @@ -1,5 +1,5 @@ La respuesta es `2`, ese es el primer valor verdadero. ```js run -alert(null || 2 || undefined); +alert( null || 2 || undefined ); ``` From 96a65ece609650a6b2bb74fa603b568b812fb784 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:34:59 -0300 Subject: [PATCH 23/36] Update solution.md --- .../11-logical-operators/1-alert-null-2-undefined/solution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md index b8da8ec85..9cd356a62 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md @@ -3,3 +3,4 @@ La respuesta es `2`, ese es el primer valor verdadero. ```js run alert( null || 2 || undefined ); ``` + From 4809cbece5de016563e4705ab21eed6d0b68c132 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:35:17 -0300 Subject: [PATCH 24/36] Update task.md --- .../11-logical-operators/1-alert-null-2-undefined/task.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md index 49b2a56bd..2bf460f1d 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md @@ -7,5 +7,6 @@ importance: 5 ¿Cuál será la salida del siguiente código? ```js -alert(null || 2 || undefined); +alert( null || 2 || undefined ); ``` + From f2e80f4f83e731225ab45232c59e9ae72928c756 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:36:26 -0300 Subject: [PATCH 25/36] Update task.md --- 1-js/02-first-steps/11-logical-operators/2-alert-or/task.md | 1 + 1 file changed, 1 insertion(+) diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md index 804461453..4b5519fbb 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md @@ -9,3 +9,4 @@ importance: 3 ```js alert( alert(1) || 2 || alert(3) ); ``` + From 7fa3dd2c0d51ef0e7acbe601227d033ba3f11450 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:37:02 -0300 Subject: [PATCH 26/36] Update solution.md --- .../11-logical-operators/5-alert-and-or/solution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md index 92d6fef5f..627b30e5c 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md @@ -13,3 +13,4 @@ null || 3 || 4 ``` Ahora el resultado será el primer valor verdadero: `3`. + From 1adc84c24d3ec3e9ccb04cd1b12e91ba4c26366f Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:37:11 -0300 Subject: [PATCH 27/36] Update solution.md --- .../11-logical-operators/8-if-question/solution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md index 542624637..f9ce47b32 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md @@ -17,3 +17,4 @@ if (-1 && 0) alert( "segundo" ); // null || -1 && 1 -> null || 1 -> 1 if (null || -1 && 1) alert( "tercero" ); ``` + From c7cb13e93b7803acf49784ba193944d5ad818170 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:37:28 -0300 Subject: [PATCH 28/36] Update solution.md --- .../11-logical-operators/9-check-login/solution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index 687a4e0e9..d9a413d3a 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -22,3 +22,4 @@ if (userName == "Admin") { ``` Nota las sangrías verticales dentro de los bloques `if`. Técnicamente no son necesarias, pero facilitan la lectura del código. + From 0a5f045800061bf3b8fb95b6cd24015b0b22ec92 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 07:39:22 -0300 Subject: [PATCH 29/36] Update solution.md --- .../11-logical-operators/9-check-login/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index d9a413d3a..36d236030 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -14,6 +14,7 @@ if (userName == "Admin") { } else { alert( "Contraseña incorrecta" ); } + } else if (userName == "" || userName == null) { alert( "Canceledo" ); } else { @@ -22,4 +23,3 @@ if (userName == "Admin") { ``` Nota las sangrías verticales dentro de los bloques `if`. Técnicamente no son necesarias, pero facilitan la lectura del código. - From 28c23148a78d1f7c967c97091867ceb066c005f6 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 10:58:41 -0300 Subject: [PATCH 30/36] Update article.md --- 1-js/02-first-steps/11-logical-operators/article.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index f63ca6d88..ca88dc510 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -27,7 +27,7 @@ alert(true || false); // true alert(false || false); // false (falso) ``` -Como podemos ver, los resultados son siempre `true` excepto cuando ambos operandos son `false`. +Como podemos ver, el resultado es siempre `true` excepto cuando ambos operandos son `false`. Si un operando no es un booleano, se lo convierte a booleano para la evaluación. @@ -84,7 +84,7 @@ El operador OR `||` realiza lo siguiente: Un valor es retornado en su forma original, sin la conversión. -En otras palabras, una cadena de OR `"||"` retorna el primer valor verdadero o el último valor en caso de que dicho valor no sea encontrado. +En otras palabras, una cadena de OR `"||"` retorna el primer valor verdadero o el último valor en caso de que ningún verdadero sea encontrado. Por ejemplo: @@ -101,7 +101,7 @@ Esto brinda varios usos interesantes comparados al "OR puro, clásico, de solo b 1. **Consiguiendo el primer valor verdadero de una lista de variables o expresiones.** - Imagina que tenemos múltiples variables que pueden contener datos o ser `null/undefined`. ¿Cómo podemos encontrar el primer valor que contenga datos? + Imagina que tenemos múltiples variables que pueden contener datos o bien ser `null/undefined`. ¿Cómo podemos encontrar el primer valor que contenga datos? Podemos usar OR `||`: @@ -244,7 +244,7 @@ Por ejemplo: ```js run let x = 1; -x > 0 && alert("Mayor que cero!"); +(x > 0) && alert("Mayor que cero!"); ```` La acción en la parte derecha de `&&` sería ejecutada sólo si la evaluación la alcanza. Eso es, solo si `(x > 0)` es verdadero. @@ -301,5 +301,5 @@ alert(Boolean("cadena de texto no vacía")); // true alert(Boolean(null)); // false ``` -La precedencia de NOT `!` es la mayor de todos los operadores lógicos, asi que siempre se ejecuta primero, antes de `&&` o `||`. +La precedencia de NOT `!` es la mayor de todos los operadores lógicos, así que siempre se ejecuta primero, antes que `&&` o `||`. From ded4ce0c40847d0367ef0a9ce11a40202f2141ba Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 11:06:37 -0300 Subject: [PATCH 31/36] Update task.md --- .../11-logical-operators/6-check-if-in-range/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index 2f7fe0b8e..5cae495a8 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -2,7 +2,7 @@ importance: 3 --- -# Comprueba el rango entre ellos +# Comprueba el rango por dentro Escribe una condición "if" para comprobar que `age`(edad) está entre `14` y `90` inclusivamente. From a97d693ed7c7e3a33902873c75f631d1f9a4ae01 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 11:06:40 -0300 Subject: [PATCH 32/36] Update solution.md --- .../11-logical-operators/5-alert-and-or/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md index 627b30e5c..4903143d7 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md @@ -4,7 +4,7 @@ La respuesta: `3`. alert( null || 2 && 3 || 4 ); ``` -La precedencia de AND `&&` es mayor que la de `||`, asi que se ejecuta primero. +La precedencia de AND `&&` es mayor que la de `||`, así que se ejecuta primero. El resultado de `2 && 3 = 3`, por lo que la expresión se convierte en: From e13ff70512de8e785edd38c9e0ca422e7d5a05f7 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 11:07:43 -0300 Subject: [PATCH 33/36] Update solution.md --- .../11-logical-operators/4-alert-and/solution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md index a0b0e083e..72099de38 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md @@ -4,6 +4,6 @@ La respuesta: `1` y después `undefined`. alert( alert(1) && alert(2) ); ``` -La llamada a `alert` retorna `undefined` (solo muestra un mensaje, asi que no hay un valor que retornar relevante) +La llamada a `alert` retorna `undefined` (solo muestra un mensaje, así que no hay un valor que retornar relevante) -Debido a ello, `&&` evalua el operando de la izquierda (imprime `1`) e inmediatamente se detiene porque `undefined` es un valor falso. Como `&&` busca un valor falso y lo retorna, ya está. +Debido a ello, `&&` evalua el operando de la izquierda (imprime `1`) e inmediatamente se detiene porque `undefined` es un valor falso. Como `&&` busca un valor falso y lo retorna, terminamos. From bd691f519b1fcf438f3b9260a74bf38d0e5b7efc Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 11:09:20 -0300 Subject: [PATCH 34/36] Update task.md --- .../11-logical-operators/8-if-question/task.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md index c27278f0a..e909805c1 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md @@ -9,8 +9,8 @@ importance: 5 ¿Cuáles serán los resultados de las expresiones dentro de `if(...)`? ```js -if (-1 || 0) alert( "first" ); -if (-1 && 0) alert( "second" ); -if (null || -1 && 1) alert( "third" ); +if (-1 || 0) alert( "primero" ); +if (-1 && 0) alert( "segundo" ); +if (null || -1 && 1) alert( "tercero" ); ``` From 1345509d74ab541108aaf380c33b74a0c359f86e Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 11:10:38 -0300 Subject: [PATCH 35/36] Update solution.md --- .../9-check-login/solution.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index 36d236030..b2168dc84 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -4,21 +4,21 @@ let userName = prompt("Quién está ahí?", ""); if (userName == "Admin") { + + let pass = prompt("Contraseña?", ""); - let pass = prompt("Contraseña?", ""); - - if (pass == "TheMaster") { - alert( "Bienvenido!" ); - } else if (pass == "" || pass == null) { - alert( "Cancelado." ); - } else { - alert( "Contraseña incorrecta" ); - } + if (pass == "TheMaster") { + alert( "Bienvenido!" ); + } else if (pass == "" || pass == null) { + alert( "Cancelado." ); + } else { + alert( "Contraseña incorrecta" ); + } } else if (userName == "" || userName == null) { - alert( "Canceledo" ); + alert( "Canceledo" ); } else { - alert( "No te conozco" ); + alert( "No te conozco" ); } ``` From 927cb205731c6179fabb32dfd03226bf65383932 Mon Sep 17 00:00:00 2001 From: Tomas Scandalitta <38343557+tscandalitta@users.noreply.github.com> Date: Mon, 20 May 2019 11:11:46 -0300 Subject: [PATCH 36/36] Update task.md --- 1-js/02-first-steps/11-logical-operators/9-check-login/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index cf5fe5e30..5c0481711 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -8,7 +8,7 @@ Escribe un código que pregunte por el inicio de sesión con `propmt`. Si el visitante ingresa `"Admin"`, entonces `prompt`(pregunta) por una contraseña, si la entrada es una linea vacía o `key:Esc` -- muestra "Cancelado.", si es otra cadena de texto -- entonces muestra "No te conozco". -La contraseña se comprueba así: +La contraseña se comprueba de la siguiente manera: - Si es igual a "TheMaster", entonces muestra "Bienvenido!", - Si es otra cadena de texto -- muetra "Contraseña incorrecta", pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy