# P005

> `??` mixed with `&&` or `||` needs parentheses

**Severity** Error

An expression combines the null-coalescing operator `??` with `&&` or `||` without parentheses. Whatever precedence the parser picks, a reader can easily assume the other one, so the combination must be grouped explicitly.

Wrap the part you mean in parentheses, typically the coalescing part: `(armed ?? false) && chart.isRealtime`.

## Failing example

```flowscope
script "Armed breakout"
data chart = subscribe(data.ohlcv)
state armed: bool? = null
alert hit = alert(title: "Breakout while armed")
on chart.close {
  if armed ?? false && chart.isRealtime {
    hit.trigger()
  }
  armed = chart.close > chart.high[1]
}
```

## Fixed example

```flowscope
script "Armed breakout"
data chart = subscribe(data.ohlcv)
state armed: bool? = null
alert hit = alert(title: "Breakout while armed")
on chart.close {
  if (armed ?? false) && chart.isRealtime {
    hit.trigger()
  }
  armed = chart.close > chart.high[1]
}
```

## Related

- [P004](/docs/scripting/reference/diagnostics/p004)
- [N001](/docs/scripting/reference/diagnostics/n001)
