programacion-operadores-logicos

Logical operators

  • 4 min

Logical operators are used to perform boolean operations on values and variables. These operators are used in conditional structures and loops to combine multiple conditions and obtain a final result.

The most common logical operators are AND, OR, and NOT:

OperatorExample
ANDtrue AND true = true
ORtrue OR false = true
NOTNOT true = false

AND and OR Operators

The AND and OR operations are basic logical operations, whose result is given by the following table.

ABA AND BA OR B
FalseFalseFalseFalse
FalseTrueFalseTrue
TrueFalseFalseTrue
TrueTrueTrueTrue
  • AND returns true if both operands are true, and false otherwise
  • OR returns true if at least one of the operands is true

If you think about it a bit, it’s the meaning we commonly use for the words AND and OR, respectively, in everyday use.

For example, when you say

I’ll take the coat if it’s raining AND it’s cold

You take the coat only if both conditions are met simultaneously.

Whereas when you say,

I’ll take the coat if it’s raining OR it’s cold

You take the coat if one of the two conditions is met.

NOT Operator

On the other hand, the NOT operator is very simple and simply inverts a logical value.

ANOT A
FalseTrue
TrueFalse

The tables we have seen are associated with Boolean algebra and are usually called truth tables.

Example in Different Languages

In languages with syntax inherited from C, the operators are &&, ||, and !.

OperatorExample
ANDtrue && true = true
ORtrue || false = true
NOT!true = false

For example, in C, C++, C#, and Java the logical operators are identical and have the following form.

bool or_a_b = a || b;
bool and_a_b = a && b;
bool not_a_b = !a;
Copied!

Which is identical to the case of JavaScript, with the only difference being that the variable is declared with the keyword let.

let or_a_b = a || b;
let and_a_b = a && b;
let not_a_b = !a;
Copied!

Other languages, such as Python, SQL, or VB, use the words AND, OR, and NOT as operators. For example, the previous examples would look like this in Python.

or_a_b = a or b
and_a_b = a and b
not_a_b = not a
Copied!

Short-Circuit Operators

In many languages, both AND and OR offer short-circuit versions. These operators are a mechanism to speed up expression evaluation.

A short-circuit operator stops evaluation as soon as it knows the result without needing to evaluate the rest of the operators.

It uses the “trick” that an operation with several ANDs will be false if one of its members is false. Similarly, a series of conditions with OR will be true if one of its members is true.

We can use this to speed up the calculation of expressions, which is precisely what the short-circuit versions do.

  • AND stops evaluation as soon as it finds a false and evaluates the expression to false.
  • OR stops evaluation as soon as it finds a true, and evaluates the expression to true.

That is,

OperatorExample
AND (&&)false && (this will not be evaluated)
OR (||)true || (this will not be evaluated)

For example, in this C# expression,

// if (a > b) is true
// (c < d) will never be evaluated
bool result = (a > b) && (c < d);  
Copied!

In general, we will almost always use the short-circuit versions of the operators because they are more efficient.