Flow of dependencies in DAGs are determined by the d-separation criteria, and two variables are d-separated if and only if each path (without considering the orientation of the arrows) is blocked.
Now in your specific example, by conditioning on $C$ you block the path $A \rightarrow C \rightarrow E$ but you also open the path $A \rightarrow C \leftarrow B \rightarrow D \rightarrow E$, therefore not all paths are blocked and we got $A\not\perp E|C$.
On the contrary, by conditioning on both $C,E$ or $C,D$, all the paths between $A$ and $E$ are d-separated.