Build and break things (avoid passive content), and then study the basics.
I started coding when I was 8 (hitting 46 next month). I did go to university and studied all the CS side eventually, but I got in already knowing how to write code proficiently (never completed my degree, but I got 90% there).
When I was younger I lacked the foundational knowledge to do things efficiently.
I re-discovered a few things on my own (like sorting), due to lack of resources, but it helped me learn how to tackle difficult problems. This phase was mostly one of discovery, trying to get my hands on any information I could and attempting to build things I cared about.
The trick is to code as much as you can: on a piece of paper, on your head, on the computer at last.
Build and abandon as many toy programs as you can, practice creates knowledge, and that abandoned toy always leaves something behind in your mind.
Learn to track program state on paper. It sounds stupid and arcane, but the effort helps you build a better mental model of what's going on, eventually you won't need any paper.
It's a bit like math exercises, the repetition automates knowledge. This eventually teaches you to abstract away concepts, so you can effectively break down complex problems.
Eventually, when I really started studying algorithms, algorithmic order, math, numeric methods, programming paradigms, hardware, concurrency, OS structure, distributed systems, compilers, etc. my tool box greatly expanded. But that's for later.
Anyway, just do as much as you can, videos don't help as much, you have to try and code, be frustrated, push through that frustration and get your "aha!" moment.
Coding doesn't require a computer, you need to learn a type of disciplined thought process that's not natural for most people.
That's the hard part.