Sure, here is a recommended order to learn advanced JavaScript/ES6 concepts. Note that the "difficulty" of a concept can vary based on an individual's previous experience and comfort with programming.
1. **Template Literals**: These are an easy starting point, providing a more powerful way to work with strings.
2. **Arrow Functions**: A more concise syntax for defining functions, but understanding how `this` works with arrow functions can be tricky.
3. **Default Parameters**: An easy-to-understand feature that can make your functions more flexible.
4. **Destructuring Assignment**: This syntax can make your code more concise, but it can be a little tricky to understand at first, especially when dealing with nested data.
5. **Spread/Rest Operators**: These provide powerful ways to work with arrays and objects, but can be tricky to understand at first.
6. **Array Methods (map, filter, reduce)**: These are higher-order functions, which are a core part of functional programming in JavaScript. Understanding these methods will significantly improve your ability to work with arrays.
7. **Import/Export (ES6 Modules)**: These are essential for any large JavaScript project, but understanding the different ways to export and import can take some time.
8. **Promises**: Asynchronous programming is a challenging but essential part of JavaScript, and promises are a key part of that.
9. **Async/Await**: This syntax makes asynchronous code look more like synchronous code, making it easier to understand and work with. However, you need to understand promises before you can fully understand async/await.
Remember, the best way to learn these concepts is by doing. Try to use each concept in a small project or coding exercise before moving on to the next one. Happy learning!