/*
* Logical operators
*/
// OR
// returns first operand evaluated as TRUE
console.log(true || false); // true
console.log(false || true); // true (si "false", on passe à l'argument suivant)
console.log("abc" || ""); // abc
Boolean("a"); // true
Boolean(""); // false
console.log("" || "abc"); // abc (si "false", on passe à l'argument suivant)
console.log("" || ""); // ""
// Falsy values
// All those values, after converted to boolean type, are evaluated as false.
console.log("" || 0 || null || undefined || NaN || false); // false (valeur du dernier operand, car tous les operands précédents ont été évalués comme "false")
let city;
const defaultCity = "New York"
console.log(city || defaultCity); // New York ("city" = undefined, donc on nous retourne "default");
let myCity = city || defaultCity;
console.log(myCity); // New York (if "city" is Falsy => "defaultCity")
city = "Los Angeles";
myCity = city || defaultCity;
console.log(myCity); // Los Angeles ("city" now contains an non empty string, so it returns true. Evaluation is stopped when first true value is found)
let myOtherCity = city || console.log("Fill in city please") || defaultCity;
console.log("myOtherCity " + myOtherCity); // Los Angeles
// AND operator
// returns first operand evaluated as FALSE
console.log(true && false); // false
console.log(false && true); // false
// And returns value of the first falsy operand
console.log("abc" && 10 && false && "" && "abcd"); // false
console.log("abc" && 10 && NaN && "" && "abcd"); // NaN (get value of first Falsy operand)
console.log("abc" && 10 && "" && "abcd"); // ""
// All operands are "truthy"
console.log("abc" && 10 && true && 123 && "string"); // string (when all operands are evaluated to true, value of the last operand is returned)
console.log("abc" && 10 && true && 123 && "Hello World"); // Hello World
Boolean("Hello World"); // true
// NOT operator
console.log(!"abc"); // false
console.log(!""); // true (empty string is falsy value)
console.log(!0); // true
let myVariable;
myVariable = undefined;
console.log(!myVariable); // true
myVariable = "Frank";
console.log(!myVariable); // false
// Quick truthy/falsy check
myVariable = null;
console.log(!!myVariable); // false (because "null" is falsy value)
myVariable = 10;
console.log(!!myVariable); // true (because "10" is truthy value)