The best way to learn programming from scratch (pun not intended) is to just pick a language and make a simple project. Something you know you'll enjoy (so you're motivated). It doesn't have to be a snake/tetris/pong clone (or even a game), but those are all reasonable starts.
I would advise not blindly following a tutorial. Each step may be explained fully, but if you're not serious about it, it's very easy to just copy the code and not understand what's actually happening.
You say you've "mostly master[ed] programming logic". I assume you mean you know how if/else and loop logic works, which is great. If you know about strings, integers, floats, etc. that's even better.
I would suggest you look into learning "functional programming". It's the design philosophy of making lots of small "helper" functions that make your code really easy to read and often reduces the amount of actual code you have to write.
Example: Let's say I want to make a basic calculator (just the numbers 0-9 and the 4 operations +,-,x,/). A dumb way to write this would be... (pseudocode, not actual language syntax)
function calculate(number_1, number_2, operation) {
if (number_1 is 0 AND number_2 is 0 AND operation is x) {
return 0 x 0;
}
else if (number_1 is 0 AND number_2 is 0 AND operation is +) {
return 0 + 0;
}
else if (number_1 is 0 AND number_2 is 0 AND operation is -) {
return 0 - 0;
}
else if (number_1 is 0 AND number_2 is 0 AND operation is /) {
return ERROR;
}
...........
}
So what would be better? How about we make 4 different functions, 1 for each of the operations?
function add(number_1, number_2) {
return number_1 + number_2;
}
function multiply(number_1, number_2) {
return number_1 x number_2;
}
function subtract(number_1, number_2) {
return number_1 - number_2;
}
function divide(number_1, number_2) {
if (number_2 is 0) {
return ERROR;
}
else {
return number_1 / number_2;
}
}
And that's it! All we'd need to do is check which operation the user wants and use the appropriate function. Also, if you ever want to do this kind of thing in other projects (adding/reducing health, points...) you can just copy/paste these functions into another project and they'll work there just as well! This sort of modular design is something I really like to use, because it's like building a house. Maybe one of your functions is "door shaped", another might be "window shaped", then you have the custom "chimney shaped" function which doesn't get re-used very often.
I've sort of gone off track, let me try to get back on it.
Some of the easiest (and widely used) languages are Javascript (JS), Python, and Java. If you specifically want to learn how to make games, pick either Unity or Godot and use C# (harder) or GDScript respectively.
See the results of programs/games made with them and decide what looks cool to you. (Lots of games here are made in JS/Unity/Godot) If you want to make something web based, you'll need HTML and JS, but HTML is basically just "how does the page look?".
Pick a language and stick with it, learning your second programming language is a million times easier than learning your first. Unfortunately, you have to learn your first, first.
You will make mistakes. You will write "if(x=y)" when you should've written "if(x==y)". Accept it, learn from it, move on.
Whenever you want to make something, break it down to into the smallest chunks possible. "I want to code a health bar" = "I need a rectangle. I need a rectangle with a green background inside it. I need a variable for the health value. I need a function to change the health. I need to change the width of the green rectangle when the health changes. I need to display the number on the bar..."
When you have a small chunk, look up how to do it. Don't bore yourself looking at the official documentation. Don't switch your brain off and blindly follow tutorials for how to make an entire game in the language.
Make sure you have a nice programming environment. Visual Studio Code is great, free, and has plugins that check your code as you're writing it (so you know the syntax is right before running the code). But there are plenty of similar/better options out there, just pick one and move on.
The videos you should watch are about programming philosophy. Learn more about functional programming. Get confused from an introduction to object-oriented programming (OOP). Try OOP and realise it's actually really cool as well. Learn how to not put if()s inside if()s inside if()s inside if()s... (YouTube - "Why You Shouldn't Nest Your Code")
Then when you've managed to write a few simple programs (that work), start to look into how to structure your code. What are the best practices for your language? Why are they the best practices? Are you naming your variables readable names (playerHealth, totalScore) or are you just labelling them a, b, c... as you go? After a month, go back to an old project. Do you understand everything you wrote? Or are you googling what things mean?
Some food for thought. Programming is a really rewarding craft and well worth the trials that come with it. :)