So there is some good discussion on the Content by Label documentation page, specifically around how the required labels and operators work. I am trying to understand the intended behavior because as far as I am seeing, its not behaving correctly (using 4.3 at the time of this post).
Please see the following scenarios and what I would expect based on the conversations on that page above. Note: I am assuming the order of labels does not affect anything.
Configuration: labels=aa,bb,+cc,-dd
Operator: OR (default)
Expected Logical Representation: (aa OR bb) AND cc AND NOT dd
Actual Behavior: aa OR bb AND cc AND NOT dd
Configuration: labels=aa,bb,+cc,-dd
Operator: AND
Expected Logical Representation: (aa AND bb) AND cc AND NOT dd
The problem I am seeing is in the first scenario, where I am getting results with pages that just have "cc". I would expect pages that have "cc", but also "aa" or "bb". I would want non-required labels to be grouped in parenthesis so the operator applies to just them. I'd expect this behavior because if we just had "aa,bb" it would only return items with 1 or more of those, not 0 or more (i.e. every page in your instance). Having a required-label shouldn't break that behavior.