Explain the difference between & and && operators in JavaScript.

In JavaScript, `&` and `&&` are two different operators with distinct purposes:

1. Bitwise AND Operator (`&`):
   - The `&` operator in JavaScript is the bitwise AND operator.
   - It performs a bitwise AND operation between the individual bits of two operands.
   - The result is a new integer whose bits are set to 1 only where the corresponding bits of both operands are set to 1.

   let num1 = 5;  // Binary: 0101
   let num2 = 3;  // Binary: 0011

   let result = num1 & num2;  // Bitwise AND

   console.log(result);  // Outputs: 1 (Binary: 0001)


In this example, the `&` operator performs a bitwise AND on the binary representations of `5` and `3`, resulting in the value `1`.

2. Logical AND Operator (`&&`):
   - The `&&` operator in JavaScript is the logical AND operator.
   - It performs a logical AND operation between two boolean expressions.
   - The result is `true` if both expressions evaluate to `true`; otherwise, it is `false`.

   let condition1 = true;
   let condition2 = false;

   let result = condition1 && condition2;  // Logical AND

   console.log(result);  // Outputs: false


In this example, the `&&` operator checks if both `condition1` and `condition2` are `true`, which is not the case, so the result is `false`.

In summary, the key difference is that `&` is the bitwise AND operator working on individual bits, whereas `&&` is the logical AND operator working on boolean expressions. While `&&` is commonly used for logical conditions, `&` is often used for bitwise operations on integer values. Mixing them up in a boolean context may lead to unexpected behavior.