Know your element (__) from your modifier (--). Both blocks and elements can have modifiers. (.b--m, .b__e--m).
In react lingo, BEM's "B" (for "Block") is a component.
Elements can nest deep in html, but the selector doesn't represent this deep nesting. (no .a__b__c, instead just .a__c - which can be in .a__b).
The idea
The idea with BEM is to keep a flat hierarchy (don't nest selectors) with simple selectors - only one class per selector, and no IDs or element tags. By not nesting we have a low and consistent specificity of all html elements, which makes it possible to have modifications of styles without using !important.