The Short-Circuit evaluation consist in check or execute the second argument only if the first argument is not enough to determine the value of the expression.
You can do a short-circuit evaluation with && and || operators.
## Example with && operator:
```c
canOpenFile(filename) && openFile(filename); // If you can open the file then open it.
```
The example above is equivalent to:
```c
if ( canOpenFile(filename) ) {
openFile(filename);
}
```
## Example with || operator:
```c
isServerOn || startServer(); // If the server is not on then start it.
Notice when `if ( i > 10 )` fails, the statement is false and the check `if ( j > 10 )` is never run. `if ( i > 10 && j > 10 )` behaves exactly the same way, because if `i > 10` is false then the entire statement is automatically false, and there is no need to run an additional check.