# Logical conditions

• 09-08-2012, 01:33 AM
rdspoons
Logical conditions
Logical conditions

Notes:
Here are a few logic based conditonal alternatives.
Each numbered point shows the traditional conditional form followed by the logical form.

1)
Traditional Form: `if(a){...}`

Code:

```if(banana){fruitcolor="yellow"};  // <== Error banana is undefined var banana = 1; if(banana){fruitcolor="yellow"};  // <== fruitcolor is set to yellow```
Logical Form: `a&&(...)`
Code:

```banana&&(fruitcolor="yellow");    // <== Error banana is undefined var banana = 1; banana&&(fruitcolor="yellow");    // <== fruitcolor is set to yellow```
2)
Traditional Form: `if(a>b){...}`

Code:

```var a = 101,b=5; if(a>100){b=25};                  // <== b is set to 25 var a = 10,b=5; if(a>100){b=25};                  // <== b remains 5```
Logical Form: `a>b&&(...)`
Code:

```var a = 101,b=5; a>100&&(b=25)                    // <== b is set to 25 var a = 10,b=5; a>100&&(b=25)                    // <== b remains 5```
3)
Traditional Form: `if(a>b){...}else{...}`

Code:

```var a = 101,b=5; if(a>100){b=25}else{b=1};        // <== b is set to 25 var a = 10,b=5; if(a>100){b=25}else{b=1};        // <== b is set to 1```
Logical Form: `a>b&&(...)||(...)`
Code:

```var a = 101,b=5; a>100&&(b=25)||(b=1);            // <== b is set to 25 var a = 10,b=5; a>100&&(b=25)||(b=1);            // <== b is set to 1```
4)
Traditional Form: `if(a>b){...; ...}else{...; ...}`

Code:

```var a = 101,b=5,c=33; if(a>100){b=25;c=10}else{b=1;c=0};  // <== b is set to 25 and c is set to 10 var a = 10,b=5,c=33; if(a>100){b=25;c=10}else{b=1;c=0};  // <== b is set to 1 and c is set to 0```
Logical Form: `a>b&&(...)|(...)||(...)|(...)`
Code:

```var a = 101,b=5,c=33; a>100&&(b=25)|(c=10)||(b=1)|(c=0);  // <== b is set to 25 and c is set to 10 var a = 10,b=5,c=33; a>100&&(b=25)|(c=10)||(b=1)|(c=0);  // <== b is set to 1 and c is set to 0```
Alternate Logical Form: `a>b&&(..., ...)||(..., ...)`
Code:

```var a = 101,b=5,c=33; a>100&&(b=25,c=10)||(b=1,c=0);      // <== b is set to 25 and c is set to 10 var a = 10,b=5,c=33; a>100&&(b=25,c=10)||(b=1,c=0);      // <== b is set to 1 and c is set to 0```

5)
Traditional Form: `if(a>b){...; ...}else if(a>c){...; ...}else{...;...}`

Code:

```if(a>b){...; ...}else if(a>c){...; ...}else{...;...} var a = 101,b=5,c=33; if(a>100){b=25;c=10}else if(a>50){b=7;c=2}else{b=1;c=0};  // <== b is set to 25 and c is set to 10 var a = 60,b=5,c=33; if(a>100){b=25;c=10}else if(a>50){b=7;c=2}else{b=1;c=0};  // <== b is set to 7 and c is set to 2 var a = 10,b=5,c=33; if(a>100){b=25;c=10}else if(a>50){b=7;c=2}else{b=1;c=0};  // <== b is set to 1 and c is set to 0```
Logical Form: `a>b&&(...)|(...)||a>c&&(...)|(...)||(...)|(...)`
Code:

``` var a = 101,b=5,c=33; a>100&&(b=25)|(c=10)||a>50&&(b=7)|(c=2)||(b=1)|(c=0);      // <== b is set to 25 and c is set to 10 var a = 60,b=5,c=33; a>100&&(b=25)|(c=10)||a>50&&(b=7)|(c=2)||(b=1)|(c=0);      // <== b is set to 7 and c is set to 2 var a = 10,b=5,c=33; a>100&&(b=25)|(c=10)||a>50&&(b=7)|(c=2)||(b=1)|(c=0);      // <== b is set to 1 and c is set to 0```
Alternate Logical Form: `a>b&&(..., ...)||a>c&&(..., ...)||(..., ...)`
Code:

```var a = 101,b=5,c=33; a>100&&(b=25,c=10)||a>50&&(b=5,c=2)||(b=1,c=0);            // <== b is set to 25 and c is set to 10 var a = 60,b=5,c=33; a>100&&(b=25,c=10)||a>50&&(b=5,c=2)||(b=1,c=0);            // <== b is set to 7 and c is set to 2 var a = 10,b=5,c=33; a>100&&(b=25,c=10)||a>50&&(b=5,c=2)||(b=1,c=0);            // <== b is set to 1 and c is set to 0```
What's going on with this logical condition stuff?
A comparison is made, and if it fails the rest of the statement is ignored (alternative terms are dropped, and short-circuted).
If the comparison succeeds, the remaining part of the statment is processed.

All logical statments are evaluated to true or false.

The meaning of the symbols "&&", "||", "|", and ",".

a op b&&c
evalutes a op b, and if true, evaluates c

a||b
a is evaluated and if a is false, b is evaluated.

a|b
a is evaluated and irregardless of its truth, b is evaluated

a,b
a is evaluated, and then b is evaluated

below, c and d are statements

a op b&&(c)
evalutes a op b, and if true, evaluates c

a op b&&(c)||(d)
evalutes a op b, and if true, evaluates c - otherwise d is evaluated.

a op b&&(c)|(d)
evalutes a op b, and if true, evaluates c, and then d.

a op b&&(c,d)
evalutes a op b, and if true, evaluates c, and then d.

Here's a final example:
Code:

`var isZero=1,answer1=answer2="unknown";`
Code:

`if(isZero==0){answer1="yes"}else{answer1="no"};`
isZero is compared to 0.
if the comparison is true then set answer to yes

The logical approach to conditionals
Code:

`isZero==0&&(answer="yes")||(answer="no");`
isZero is compared to 0.
if the comparison is true then set answer to yes