What is the Difference Between & and &&?

🆚 Go to Comparative Table 🆚

The main difference between the & and && operators lies in their evaluation of conditional statements:

  1. Bitwise vs. Logical: The & operator is both a logical and a bitwise operator, whereas the && operator is only a logical operator. The bitwise AND operator (&) works on bits and performs "bit by bit" operations, while the logical AND operator (&&) operates on Boolean expressions.
  2. Short-circuit evaluation: The && operator is a short-circuit operator, meaning it only checks the left-hand side of the conditional statement. If the left-hand side results in FALSE, the right-hand side of the expression is not evaluated because the result is already known to be FALSE. The & operator, on the other hand, evaluates both sides of the expression.

In summary, the & operator is used for both logical and bitwise operations, evaluating both sides of the expression, while the && operator is used only for logical operations and evaluates only the left-hand side of the expression using short-circuit evaluation.

Comparative Table: & vs &&

The main difference between the logical AND operators and and && lies in their evaluation behavior and performance. Here's a summary of their differences:

Operator Evaluation Behavior Performance
and Perform element-wise comparisons in much the same way as arithmetic operators. Slower than &&.
&& Evaluate left to right examining only the first element of each vector, with evaluation proceeding only until the result is determined. Faster than and.

In R, the and operator performs element-wise comparisons along the vectors, which can be slower than the && operator. The && operator evaluates left to right, stopping as soon as the result is determined, making it more efficient. For example, comparing two vectors x > 1 & x < 3 with the and operator takes longer than x > 1 && x < 3 with the && operator.