I recently watched a video describing a decent learning path: https://www.youtube.com/watch?v=hnjly9iBHso
And Tim Corey has a lot of good, free, videos on YouTube. But like he says, you really have to sit down a practice. You can't just watch videos all day long. It's one thing to watch an NBA game to see how basketball is played, but it's another thing when you get on the court and do it yourself.
And by practice, you don't need to come up with an idea for an app. Just create a project to test the one skill you are trying to learn. Want to understand foreach? Create a project for it. Want to understand switch statements? Create a new project just for that.
Good luck!