It was an error typing then. The example is part of a much bigger script, I obviously know there is a more simple way to do output the same thing of the example.
[...] (conditional section)
Evaluates the expression between [ and ]. If it has the truth value true, its string value and the truth value true are returned. Otherwise an empty string and false are returned.
Example: [%artist%] returns the value of the artist tag, if it exists. Otherwise it returns nothing, when artist would return "?".
Honest question. You say I'm misusing brackets, but the docs clearly states it works for expressions. (?)
And that is reflected by $not() or $and() affecting the brackets.
Otherwise how do you do this?
[$if([%RATING%],$not("")$ifequal(%RATING%,5,1,0),)s] // 1s, 0s, nothing
[$if([%RATING%],$not("")$ifequal(%RATING%,5,1,0),)$ifequal(%DATE%,2018,s,o)] // 1s, 0o, nothing
[$if([%RATING%],$ifequal(%RATING%,5,1,0),)s] // nothing
[$if([%RATING%],$ifequal(%RATING%,5,1,0),)$ifequal(%DATE%,2018,s,o)] // nothing
$if([%RATING%],$ifequal(%RATING%,5,1,0),)s // 1s, 0s, s
$if([%RATING%],$not("")$ifequal(%RATING%,5,1,0),)$ifequal(%DATE%,2018,s,o) // 1s, 0o, o

You could convert that to...
$if([%RATING%],$not("")$ifequal(%RATING%,5,1s,0s),) // 1s, 0s, nothing
$if([%RATING%],$ifequal(%RATING%,5,1$ifequal(%DATE%,2018,s,o),0$ifequal(%DATE%,2018,s,o)),)// 1s, 0o, nothing
In complex expressions, being able to conditionally evaluate an entire branch (and not a tag) greatly simplifies the usage