Select Page

JavaScript Logical Operators

by | Jul 7, 2023

Logical Operators

JavaScript logical operators play a crucial role in managing the flow of your code and facilitating decision-making based on conditions.

Having a robust grasp of JavaScript logical operators is vital. In this blog post, we’ll delve into the various types of logical operators in JavaScript. Additionally, we’ll provide code examples to illustrate their practical use cases, helping you gain a deeper understanding of how to effectively employ these operators in your code. Let’s dive in!

The AND Operator (&&)

In JavaScript, the AND logical operator is represented by &&. It is used to combine two or more conditions and return true only if all of the conditions evaluate to true.

This operator is particularly useful when you need to make sure that multiple conditions are met before proceeding with a specific block of code.

To use the AND operator, you can simply place && between the conditions you want to check. Let’s look at a basic example:

// Example 1
const age = 25;
const hasDriverLicense = true;

if (age >= 18 && hasDriverLicense) {
  console.log("You are eligible to drive.");
} else {
  console.log("You are not eligible to drive.");

// Example 2
const username = "admin";
const password = "pass123";

if (username === "admin" && password === "pass123") {
  console.log("Login successful!");
} else {
  console.log("Invalid username or password.");

One common mistake when using logical operators is not considering their precedence. In JavaScript, the AND operator (&&) has a higher precedence than the OR operator (||). It’s crucial to use parentheses to ensure your conditions are evaluated correctly.

The AND operator can be combined with other logical operators like OR (||) and NOT (!) to create more complex conditions. This allows you to build intricate decision-making processes in your code.

Can you use the AND operator with non-boolean values?

Yes, JavaScript is flexible, and the AND operator can be used with non-boolean values. It will return the last truthy value in the expression or the first falsy value.

let value1 = "Hello";  // A non-boolean value (truthy)
let value2 = "";       // A non-boolean value (falsy)

let result = value1 && value2;

console.log(result);  // Output will be an empty string because it's the first falsy value

In this example, value1 is a non-boolean value that is truthy (a non-empty string), and value2 is a non-boolean value that is falsy (an empty string). When we use the AND operator to combine them, the result will be the first falsy value encountered, which is an empty string.

You can use this behavior to your advantage in various situations, such as setting default values or conditionally choosing one value over another in your code.

How does short-circuiting work with AND?

JavaScript employs short-circuit evaluation with the AND operator. If the first condition is false, the second condition is not evaluated, making code more efficient.

The OR Operator (||)

In JavaScript, the OR operator, represented as ||, is a fundamental logical operator used to perform conditional checks and make decisions in your code.

The OR operator is simple yet powerful, as it allows you to evaluate multiple conditions and return true if at least one of them is true. Let’s explore the OR operator in JavaScript.

The OR operator is frequently used when you want your code to execute a particular block of code if any of the conditions provided is true. It’s like saying, “If condition A or condition B or condition C is true, then perform a specific action.

// Example 1
const isWeekend = true;
const hasPartyInvitation = false;

if (isWeekend || hasPartyInvitation) {
  console.log("Let's have fun!");
} else {
  console.log("No plans for today.");

// Example 2
const isPremiumUser = false;
const hasDiscountCoupon = true;

if (isPremiumUser || hasDiscountCoupon) {
  console.log("You are eligible for a discount.");
} else {
  console.log("No discount available.");

The Short-Circuiting Behavior of OR

JavaScript’s OR operator has a useful feature known as short-circuiting. It means that if the first condition is true, the subsequent conditions are not evaluated because the overall result is already known.

This behavior can improve the performance of your code, especially when dealing with complex conditions.

let hasPermission = true;
let canEdit = true;

if (hasPermission || canEdit) {
    console.log("You can edit the document.");
} else {
    console.log("You don't have permission to edit.");

In this code, even though both hasPermission and canEdit are true, JavaScript does not evaluate the canEdit condition because the OR operator already knows that the result is true.

The NOT Operator (!)

In JavaScript, the “!” (exclamation mark) is the logical NOT operator, often referred to as the “not logical operator.” It is used to reverse the boolean value of an expression. Essentially, it converts a true value to false and vice versa.

Using the not logical operator can simplify your code and make it more readable, especially when you need to express negation. Instead of using verbose comparisons, you can use the “!” operator to make your intentions clear.

// Example 1
const isLoggedOut = false;

if (!isLoggedOut) {
  console.log("You are logged in.");
} else {
  console.log("Please log in to continue.");

// Example 2
const hasAccess = true;

if (!hasAccess) {
  console.log("Access denied.");
} else {
  console.log("Access granted.");

The not logical operator enhances code readability by making it evident that you are negating a condition. This can help other developers (including your future self) understand your code more easily.

How does the not logical operator differ from other logical operators?

The not logical operator specifically negates boolean values, while other logical operators like && (AND) and || (OR) are used for combining or evaluating multiple conditions. The not logical operator is all about reversing the truthiness of a value.

Are there any potential pitfalls when using the not logical operator?

One common pitfall is using the not logical operator on non-boolean values. It will coerce them into booleans and might lead to unexpected results. Always ensure that you apply it to boolean expressions.

let value = "Hello";

if (!value) {
    console.log("This will be executed if value is falsy.");
} else {
    console.log("This will be executed if value is truthy.");

In this example, value is a string, and we apply the not logical operator to it. When you run this code, you might expect that it will check if the string value is empty or not and execute the appropriate block of code. However, the result will not be as expected.

The not logical operator coerces the string "Hello" into a boolean. In JavaScript, non-empty strings are considered truthy. So, !value will evaluate to false, and the code inside the else block will be executed because the value is considered “truthy.”

To avoid this pitfall, it’s essential to understand how the not logical operator works and make sure you apply it to boolean expressions or values whose truthiness you want to negate.

If you specifically want to check if a string is empty or not, you should use a different approach, like checking its length or comparing it to an empty string.

Combining JavaScript Logical Operators

AND & OR JavaScript Logical Operators

Combining JavaScript logical operators is a fundamental concept in programming that allows you to create complex conditions to control the flow of your code.

// Example 1
const income = 50000;
const creditScore = 750;

if (income > 40000 && creditScore >= 700) {
  console.log("You qualify for a loan.");
} else {
  console.log("Sorry, you do not qualify for a loan.");

// Example 2
const isEmployee = true;
const isManager = true;

if ((isEmployee && !isManager) || (isEmployee && isManager)) {
  console.log("You have access to certain features.");
} else {
  console.log("Access denied.");

Using Parentheses for Clarity

When combining logical operators, it’s crucial to use parentheses to clarify the order of evaluation. This ensures that your conditions are executed as intended. Without parentheses, the order of evaluation follows operator precedence rules, which may not be what you expect.


JavaScript logical operators are powerful tools that allow you to make decisions and control the flow of your code based on conditions.

By mastering the AND, OR, and NOT operators, you can create complex conditions and write more robust and efficient code. Experiment with these operators and leverage their flexibility to build dynamic applications with ease.


Submit a Comment

Your email address will not be published. Required fields are marked *

Looking For Something?

Follow Us

Related Articles

How to Open Links in a New Tab Using HTML and JavaScript

How to Open Links in a New Tab Using HTML and JavaScript

Introduction How to Open Links in a New Tab Using HTML and JavaScript Have you ever clicked on a link and wished it would open in a new tab instead of navigating away from the current page? Well, you're in luck! In this blog post, we'll guide you through the simple...

Recursion in JavaScript: Why and How

Recursion in JavaScript: Why and How

Recursion is a powerful programming concept that often mystifies beginners, but it's an essential tool in a developer's toolkit. In JavaScript, recursion involves a function calling itself to solve a problem. This might sound a bit perplexing at first, but let's break...

Subscribe To Our Newsletter

Subscribe To Our Newsletter

Join our mailing list to receive the latest news and updates from our team.

You have Successfully Subscribed!