# Alternative (Default value)

This operator is used to provide alternative (or default) values when a particular expression is either null or false.

## LHS is defined

Given a sample.yml file of:

```yaml
a: bridge
```

then

```bash
yq '.a // "hello"' sample.yml
```

will output

```yaml
bridge
```

## LHS is not defined

Given a sample.yml file of:

```yaml
{}
```

then

```bash
yq '.a // "hello"' sample.yml
```

will output

```yaml
hello
```

## LHS is null

Given a sample.yml file of:

```yaml
a: ~
```

then

```bash
yq '.a // "hello"' sample.yml
```

will output

```yaml
hello
```

## LHS is false

Given a sample.yml file of:

```yaml
a: false
```

then

```bash
yq '.a // "hello"' sample.yml
```

will output

```yaml
hello
```

## RHS is an expression

Given a sample.yml file of:

```yaml
a: false
b: cat
```

then

```bash
yq '.a // .b' sample.yml
```

will output

```yaml
cat
```

## Update or create - entity exists

This initialises `a` if it's not present

Given a sample.yml file of:

```yaml
a: 1
```

then

```bash
yq '(.a // (.a = 0)) += 1' sample.yml
```

will output

```yaml
a: 2
```

## Update or create - entity does not exist

This initialises `a` if it's not present

Given a sample.yml file of:

```yaml
b: camel
```

then

```bash
yq '(.a // (.a = 0)) += 1' sample.yml
```

will output

```yaml
b: camel
a: 1
```
