li > ul > li selects all li elements which are deeper than the first level of a ul.
li selects all li elements
li:not(li > ul > li) should select all li elements which are no deeper than the first level of a ul--that is, only first level elements--but it doesn't. Why? 
Thanks!