Logical operators help you make decisions by combining or changing true/false values.
Logical operators in Javascript
condition1 && condition2 // AND condition1 || condition2 // OR !condition // NOT
AND (&&) returns true only if both conditions are true.
OR (||) returns true if at least one condition is true.
NOT (!) flips true to false and false to true.
const a = true && false; // false
const b = true || false; // true
const c = !true; // false
const d = !(false || true); // false
This program checks if a user is logged in and if they are an admin. It shows different messages based on these conditions.
const isLoggedIn = true; const isAdmin = false; if (isLoggedIn && isAdmin) { console.log('Show admin panel'); } else if (isLoggedIn && !isAdmin) { console.log('Show user dashboard'); } else { console.log('Please log in'); }
Logical operators work with values that are true or false, but JavaScript also treats other values as true or false (called truthy and falsy).
Use parentheses to group conditions clearly and avoid confusion.
Short-circuiting: AND stops checking if the first is false; OR stops if the first is true.
Logical operators combine or change true/false values to help make decisions.
AND (&&) needs both true, OR (||) needs one true, NOT (!) flips true/false.
They are useful for controlling what your program does based on multiple conditions.
Practice
true only if both conditions are true?Solution
Step 1: Understand AND operator behavior
The AND operator (&&) returns true only when both conditions it connects are true.Step 2: Compare with other operators
The OR operator (||) returns true if at least one condition is true, NOT (!) flips true/false, and ? is a ternary operator, not a logical operator.Final Answer:
&& (AND) -> Option CQuick Check:
AND = && [OK]
- Confusing OR (||) with AND (&&)
- Thinking NOT (!) combines conditions
- Mixing ternary operator with logical operators
isActive in JavaScript?Solution
Step 1: Recall NOT operator syntax
In JavaScript, the NOT operator is a single exclamation mark (!) placed before the variable to flip its boolean value.Step 2: Check each option
!isActive is the correct syntax. Options A, C, and D are invalid syntax in JavaScript.Final Answer:
!isActive -> Option BQuick Check:
NOT = ! before variable [OK]
- Writing not instead of !
- Placing ! after variable
- Using method calls like .not()
const a = true;
const b = false;
console.log(a || b && !b);
Solution
Step 1: Evaluate NOT operator first
!b means !false which is true.Step 2: Evaluate AND operator next
b && !b is false && true which is false.Step 3: Evaluate OR operator last
a || (result of AND) is true || false which is true.Final Answer:
true -> Option AQuick Check:
Operator precedence: ! > && > || = true [OK]
- Ignoring operator precedence
- Evaluating OR before AND
- Misunderstanding ! operator
let x = true;
if (x && !x) {
console.log('Yes');
} else {
console.log('No');
}
Solution
Step 1: Analyze the condition x && !x
x is true, !x is false, so true && false is always false.Step 2: Understand effect on code flow
Since condition is always false, 'Yes' will never print, only 'No' will print.Final Answer:
The condition x && !x is always false -> Option AQuick Check:
Contradictory condition = always false [OK]
- Thinking !x is invalid on boolean
- Expecting 'Yes' to print
- Confusing syntax errors with logic errors
const loggedIn = true;
const isAdmin = false;
// Choose the correct condition to show admin panel
Solution
Step 1: Understand requirement
Both loggedIn and isAdmin must be true to show admin panel.Step 2: Check each condition
The condition with || (OR) is true if at least one is true. The condition with !loggedIn || !isAdmin is true unless both are true. The condition with !loggedIn && isAdmin is true only if not logged in and is admin. The condition with && (AND) requires both true.Final Answer:
if (loggedIn && isAdmin) { showAdminPanel(); } -> Option DQuick Check:
Both true needed = use AND (&&) [OK]
- Using OR (||) when both conditions are required
- Negating conditions incorrectly
- Confusing logic for access control
Ready to prove it?
Pass the test and this pattern moves unknown
