I'm taking guesses at the context of your question, but do you mean in Rule Machine? If so, is the issue with how to create these expressions in the UI or is it with what they mean/how to use them?
If it's more of the first thing, I'm not aware of any specific tutorials, though here is an example that at least shows how to create a somewhat "complex" expression by combining two conditions: Rule Machine 2: Advance Conditional Rules - YouTube. It's a couple years old at this point and from Rule 4.x, but this particular part of the UI is mostly the same (the action editing table is a lot different--use the "+" button at the bottom left to add actions now, but the rest should be similar). The use of "expression" vs "condition" was also mostly clarified, where "expression" is now used to mean either a single condition or multiple conditions combined in whatever way.
If you're talking more about just how to use them, they work like boolean values do in boolean algebra (not as scary as it sounds, at least not for these purposes...) or similar boolean values and operators in most programing languages. If you have two conditions, with one evaluating to false and one evaluating to true, the outcomes with the basic RM operators will be like:
- T AND F = FALSE
- T OR F = TRUE
If both true, we get:
- T AND T = TRUE
- T OR T = TRUE
You can probably imagine the rest; if not, search for "truth tables" and you'll find more than you wanted to know.
The NOT operator just returns the opposite value:
- NOT T = FALSE
- NOT F = TRUE
Parentheses allow you to group expressions, with innermost ones evaluated first, same as you may have learned with "normal" math. Expressions in Hubitat (not always in all programming languages, so this can be different) are evaluated left to right with all "binary" operators (AND, OR, etc.) having equal precedence, not including NOT (applies to condition/subexpression directly to its right) or, again, where parentheses force a different order.
By default, if "Display current values" is selected in RM, the current value of each condition will be displayed in parentheses after, e.g. "Front door is open(F)". You'll also see the entire evaluation of the expression in square brackets at the end, e.g., 'Front door is open(F) AND Front door is unlocked(T) [FALSE]". These can be helpful if you aren't sure how your logic combines.