# Logical Operators

### To understand and effectively apply Logical operators on Digia Dashboard than you should have knowledge of Json operators.

{% content-ref url="json-operators" %}
[json-operators](https://docs.digia.tech/logic-and-interaction/adding-logic/json-operators)
{% endcontent-ref %}

#### There are various logical operators support on PIM's Dashboard

* <mark style="color:blue;">**Equal Operator**</mark> <kbd><mark style="color:blue;">(isEqual)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Not Equal Operator**</mark> <kbd><mark style="color:blue;">(isNotEqual)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Null Operator**</mark><kbd><mark style="color:blue;">(isNull)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Not Null Operator**</mark> <kbd><mark style="color:blue;">(isNotNull)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Not Operator**</mark><kbd><mark style="color:blue;">(not)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Greater than Operator**</mark> <kbd><mark style="color:blue;">(gt)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Greater than equal to Operator**</mark> <kbd><mark style="color:blue;">(gte)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Less than operator**</mark> <kbd><mark style="color:blue;">(lt)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Less than equal to Operator**</mark> <kbd><mark style="color:blue;">(lte)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**Or Operator**</mark> <kbd><mark style="color:blue;">(or)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**And Operator**</mark> <kbd><mark style="color:blue;">(and)<mark style="color:blue;"></kbd>
* <mark style="color:blue;">**If Operator**</mark> <kbd><mark style="color:blue;">( if )<mark style="color:blue;"></kbd>

#### 1. Equal Operator (isEqual)

when we have to check two operands are equal or not than we use Equal Operator. If both the operands are equal than this operator will return true otherwise it will return false.

**Arguments**

There are two arguments for equal operators (both are required). These arguments are the two operand for which we want to check the equality.

Let's understand it through a real life example

```json
// Some code
//dummy json
{
   "users": [
      {
         "id": 1,
         "name": "Alice"
      },
      {
         "id": 2,
         "name": "Bob"
      }
   ]
}
```

If we want to check the id of first user is equal to 1 or not than we can use Equal operator.

```
// Some code
isEqual(jsonGet(response.body, 'data[0].id'),1)

// Above statement will return true value
```

2. **Not Equal Operator (isNotEqual)**

when we have to check two operands are not equal than we use Not Equal Operator. If the two operands are not equal than this operation will return true otherwise it will return false.

**Arguments**

There are two arguments for not equal operators (both are required). These arguments are the two operand for which we want to check the equality.

Let's understand it through an example

```dart
// Some code
isNotEqual(2,2); //this statement will return false as both arguments are equal.
```

3. **Null Operator (isNull)**

when we have to check that a value is null or not than we can use isNull operator.

#### Arguments

There is one argument which is the value we want to check that it is null or not. (It is the required argument).

Let's understand it through an example\\

```javascript
isNull(null); //this statement will return true
isNull(2); // this statement will return false

```

#### 4. Not Null Operator ( isNotNull )

when we have to check that a value is not equal to null than we can use isNotNull operator.

#### Arguments

There is one argument which is the value we want to check that it is null or not. (It is the required argument).

Let's understand it through an example

```javascript
isNotNull(null); // this statement will return false
isNotNull(2); //this statement will return true
```

#### 5. Not Operator (not)

Not operator will reverse boolean operation. eg.., true into false and vice versa

#### Arguments

There is only one argument which is required

#### Example

```javascript
not(true); // It will return false
not(false); // It will return true 
```

#### 6. Greater than Operator (gt)

It will check one number is greater than other or not

#### Arguments

It will take two arguments and both arguments are required

#### Example

```javascript
// If first argument is greater than second argument than it will return true otherwise false
gt(3,2); // It will return true
gt(2,3); // It will return false
```

#### 7. Greater than Equal to Operator (gte)

It will check one number is greater than equal to other number or not

#### Arguments

It will take two arguments and both arguments are required

#### Example

```javascript
// If first argument is greater than equal to second argument than it will return true otherwise false
gte(3,3); // It will return true
gte(3,2); // It will return true
gte(2,3); // It will return false
```

#### 8. Less than Operator (lt)

It will check one number is Lesser than other or not

#### Arguments

It will take two arguments and both arguments are required

#### Example

```javascript
// If first argument is Lesser than second argument than it will return true otherwise false
lt(3,2); // It will return false
lt(2,3); // It will return true
```

#### 9. Lesser than Equal to Operator (lte)

It will check one number is lesser than equal to other number or not

#### Arguments

It will take two arguments and both arguments are required

#### Example

```javascript
// If first argument is greater than equal to second argument than it will return true otherwise false
lte(3,3); // It will return true
lte(3,2); // It will return false
lte(2,3); // It will return true
```

#### 10. Or Operator (or)

It will take two expressions if at least one expression is true than it will evaluate to true otherwise false

| Expression 1 | Expression 2 | Result |
| ------------ | ------------ | ------ |
| true         | true         | true   |
| true         | false        | true   |
| false        | true         | true   |
| false        | false        | false  |

#### Arguments

It will take two arguments and both arguments are required and are boolean expressions

#### Example

```javascript
or(gt(3,2),gt(2,3))
//It will return true
//Explanation
//gt(3,2) will return true and gt(2,3) will return false
// true or false  = true (From the above table)
```

#### 11. And Operator (and)

It will take two expressions as argument and evaluate to true only if both the expressions are true otherwise false

| Expression 1 | Expression 2 | Result |
| ------------ | ------------ | ------ |
| true         | false        | false  |
| false        | true         | false  |
| true         | true         | true   |
| false        | false        | false  |

#### Arguments

It will take two arguments and both arguments are required and are boolean expressions

#### Example

```javascript
and(gt(3,2),gt(2,3))
//It will return false
//Explanation
//gt(3,2) will return true and gt(2,3) will return false
// true and false  = false (From the above table)
```

#### 12 . if Operator ( if )

Returns the value corresponding to the first true condition. If no conditions are true, returns the last argument as default

Arguments

if(condition, value, \[condition2, value2, ..., elseValue]) . It will take a condition and more than one value to output

#### Example

```dart
if(gt(5,2),'greater','lesser')
//it will output greater as the condition is true
```
