There will be lot of situations when you have introduced boolean expressions in your code and in good times you might have also combined more than one boolean expressions to control your program flow.

### Boolean Expression

Any expression that can produce a boolean result can be considered as boolean expression. The end result will be boolean, i.e `true` or `false`.

For example:

``````	x == y
``````

You can use `Greater than >`, `Smaller than <`, `Greater than or equal to >=`, `Smaller than or equal to <=`, `equal to ==`, `Not equal to !=` equality operators to create a boolean expression.

### Combining Boolean Expression

You can combine more than one boolean expressions using `OR - ||`, `AND - &&` and `EXCLUSIVE OR - ^` boolean operators.

### Short-circuiting - OR (||) boolean operator

The `OR - ||` boolean operator when applied returns `true` when any one of the two operand (or boolean expression) or both operand evaluates to `true`.

If both operand evaluates to `false`, it will return `false`.

Example:

``````  bool leftOperand = true;
bool rightOperand = false;

bool result = leftOperand || rightOperand;
``````

In above code the result will contain value `true`. If the left operand (or boolean expression) is `true`, runtime will not evaluate right operand.

This is called SHORT-CIRCUITING when using OR (||) boolean operator

### Short-circuiting - AND (&&) boolean operator

The `AND - &&` boolean operator when applied returns `true` only when both operand (or boolean expression) evaluates to `true`.

If any one of the operand evaluates to `false`, it will return `false`.

Example:

``````  bool leftOperand = false;
bool rightOperand = true;

bool result = leftOperand || rightOperand;
``````

In above code the result will contain value `false`. If the left operand (or boolean expression) is `false`, runtime will not evaluate right operand.

This is called SHORT-CIRCUITING when using AND (&&) boolean operator

### Short-circuiting - EXCLUSIVE OR (^) boolean operator

The `EXCLUSIVE OR - ^` boolean operator when applied returns `true` only when only one (excatly one, any one) operand (or boolean expression) evaluates to `true`.

If both the operand evaluates to `true` or `false`, it will return `false`.

Example:

``````  bool leftOperand = false;
bool rightOperand = true;

bool result = leftOperand || rightOperand;
``````

In above code the result will contain value `true`. Due to this nature of XOR boolean operation, runtime will not perform short-circuiting here.

Happy coding !!